最近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 沒有看起來很可疑對我說:/
請留言你的重寫規則 – scibuff 2012-03-16 15:28:15
當你說它不起作用時,你的意思是什麼?你得到一個錯誤?你得到錯誤的頁面?錯誤的輸出?我使用了你的規則,當我進入'/ messages/inbox'時,它調用'messages.php?action = inbox'就好了。 – roychri 2012-03-16 17:14:37
這就是我期望的規則,但不知何故,它只是調用messages.php而沒有?action = inbox。在messages.php中有$ _GET ['action']的開關語句,我可以看到變量$ _GET爲空... 我認爲這是配置Apache的問題,但我找不到它到底在哪裏。 – krzysiek 2012-03-17 10:42:43