Mod只重写数字查询字符串

时间:2014-05-31 06:50:55

标签: php .htaccess mod-rewrite

当用户访问/user时,他会看到自己的个人资料,但当他访问/user/[id]时,他会看到具有指定id的用户个人资料。但是,有人也可以键入/user/[random string],这会导致我的服务器上的500 error。所以我想将任何non-numeric请求重定向到404 page

以下是我的RewriteRule s

RewriteEngine On
RewriteBase /

RewriteRule ^user/edit /edit.php
# RewriteRule ^errors/404.html /user.php?id=$([\w])
RewriteRule ^user/([\d])$ /user.php?id=$1

如果第二个评论与否,则无关紧要,任何non-numeric query string都会产生500 error

1 个答案:

答案 0 :(得分:1)

修改规则,添加加号:

RewriteRule ^user/([\d]+)$ /user.php?id=$1 [L]
RewriteRule ^user/.+$ /errors/500.html [L]

或:

RewriteRule ^user/([0-9]+)$ /user.php?id=$1 [L]
RewriteRule ^user/.+$ /errors/500.html [L]

[L]修饰符停止解析,是第一个规则后错误500规则必须放置的原因。