2012-03-16 116 views
4

最近2天我試圖在我的電腦上運行一些應用程序(Ubuntu 11.10,Apache/2.2.20(Ubuntu),PHP版本5.3.6-13ubuntu3.1)。它是在PHP Smarty中創建的,它使用重寫規則。一切工作正常與像鏈接:mod_rewrite添加php擴展?

localhost/news

它正確地翻譯成

localhost/news.php

應該怎麼做。但問題是像

localhost/message/inbox

更復雜的環節,應該用規則翻譯:

RewriteRule ^messages/(.*)$ /messages.php?action=$1

但它不工作。我試圖調試它。我也會唱上記錄在http.conf中

RewriteLog "/home/krzysztofp/rewrite.log" 
RewriteLogLevel 3

什麼,我可以看到的是,在開始時有

127.0.0.1 - - [16/Mar/2012:15:56:36 +0100] [krzysztofp/sid#7f8218546a30][rid#7f821837a0a0/subreq] (3) [perdir /var/www/engbook/] add path info postfix: /var/www/engbook/messages.php -> /var/www/engbook/messages.php/inbox

,然後它試圖匹配message.php

127.0.0.1 - - [16/Mar/2012:15:56:36 +0100] [krzysztofp/sid#7f8218546a30][rid#7f821837a0a0/subreq] (3) [perdir /var/www/engbook/] applying pattern '^messages/(.*)$' to uri 'messages.php/inbox'

虛擬主機:

<Directory /var/www/engbook> 
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order allow,deny 
allow from all 
</Directory> 

任何想法爲什麼它發生?

編輯: 我已經把所有的重寫規則在堆棧中的問題,所以在這裏,他們是:他們 http://pokazkod.pl/d52823d5f0d31ff26e1e29873383d2a2ceb216306a56b3aec1 沒有看起來很可疑對我說:/

+1

請留言你的重寫規則 – scibuff 2012-03-16 15:28:15

+0

當你說它不起作用時,你的意思是什麼?你得到一個錯誤?你得到錯誤的頁面?錯誤的輸出?我使用了你的規則,當我進入'/ messages/inbox'時,它調用'messages.php?action = inbox'就好了。 – roychri 2012-03-16 17:14:37

+0

這就是我期望的規則,但不知何故,它只是調用messages.php而沒有?action = inbox。在messages.php中有$ _GET ['action']的開關語句,我可以看到變量$ _GET爲空... 我認爲這是配置Apache的問題,但我找不到它到底在哪裏。 – krzysiek 2012-03-17 10:42:43

回答

8

嘗試刪除MultiViews

<Directory /var/www/engbook> 
    Options Indexes FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    allow from all 
</Directory> 
+1

OP沒有接受這一點,但我剛剛有同樣的問題,並刪除MultiViews解決了它,所以歡呼的帖子。 – M1ke 2013-01-16 14:23:34

+1

謝謝@afanasy。它幫助我找出了我的重寫規則問題 – 2013-04-11 15:51:58