2014-04-17 137 views
0

我試圖改變阿帕奇mod_rewrite的500內部錯誤

http://localhost/inbox?pg=2

http://localhost/inobox/2

,我得到了一個工作代碼如下

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

RewriteRule ^/?inbox/(\d+)$ /inbox?pg=$1 [QSD,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [QSA,L] 
然而

如果我改變 ​​3210到

http://localhost/inbox/2.5http://localhost/inbox/ 我得到500錯誤,我無法找出是什麼原因造成的。我已經檢查了PHP的空var或非數值的結束,但是,這個500錯誤踢在每次我改變它如上,有沒有人知道如何重新回到inbox.php如果發生這些情況之一?

日誌文件中讀取 r->uri = /inbox/2.5.php.php.php.php.php.php.php.php.php.php

​​

回答

0

RewriteRule ^/?inbox/(\d+)$ /inbox?pg=$1 [QSD,L]\d只匹配數字0-9,而不是.,所以2.5不符合這條規則。要匹配2和2.5,請改爲使用([\d.]+)

+0

所以有什麼解決辦法?有沒有辦法重新回到inbox.php,如果這些不匹配? – user3412305

+0

剛剛更新了我的答案。使用字符分組來包含'.'將實現匹配。否則,該規則需要遵循通用的全部或其他匹配2.5的規則。 – Armon

+0

是的工作,如何處理'收件箱/'和'inbox/2m'(數字和字母的混合)? – user3412305