Php apache mod_重写500内部错误

Php apache mod_重写500内部错误,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在努力改变 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_

我正在努力改变

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]
但是如果我改变
http://localhost/inbox/2

http://localhost/inbox/2.5
http://localhost/inbox/
我得到500个错误,但我无法找出是什么原因造成的。我已经在php端检查空变量或非数值,但是,每次我如上所述更改它时,都会出现500个错误,有人知道如果出现这种情况,我如何重定向回inbox.php吗

日志文件读取
r->uri=/inbox/2.5.php.php.php.php.php.php.php.php.php.php.php.php.php


从r->uri=/inbox/2.5.php.php.php.php.php.php.php.php.php.php.php.php中重定向
重写规则^/?inbox/(\d+)$/inbox?pg=$1[QSD,L]
\d
只匹配数字字符0-9,而不匹配
,因此2.5与此规则不匹配。要匹配2和2.5,请使用
([\d.]+)

那么解决方案是什么?如果这些不匹配,有没有办法重定向回inbox.php?刚刚更新了我的答案。使用字符分组包括
将实现匹配。否则,该规则需要遵循一个通用的全包规则或另一个与2.5匹配的规则。是的,这起作用了,如何处理
收件箱/
收件箱/2m(数字和字母的混合)?使用
([\d.a-zA-Z]*)
这大部分是常规正则表达式;是学习角色类的好教程