2014-04-17 24 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