基本的mod_rewrite问题 - > mysite.us/user/xyz.php到mysite.us/user/index.php?u=xyz

时间:2012-06-13 01:45:16

标签: regex url mod-rewrite

我第一次尝试mod_rewrite并且到目前为止没有太多运气。我当前的网址格式为http://mywebsite.com/user/index.php?u=123。如何将网址重写为http://mywebsite.com/user/123

到目前为止,我(未成功)尝试了以下操作,导致500个内部服务器错误

RewriteEngine On
RewriteRule ^user([^/]*)\.php$ /user/index.php?u=$1 [L]

我哪里错了?这应该是非常直接的。

1 个答案:

答案 0 :(得分:2)

你几乎把它纠正了。您希望[^/]匹配所有数字直到结束,而不是/匹配所有内容但不包括下一个([\d]+)$。在/之后您需要user,最后删除.php

RewriteEngine On
RewriteRule ^user/([\d]+)$ /user/index.php?u=$1 [L]

注意,我还从/删除了右侧重写的前导/user。但这可能不是必要的;除非我为自己测试,否则我永远不会记得领导/的行为方式。

最有可能的原因是,500错误的原因是重写循环。由于你最后匹配.php,即使user/index.php也会匹配规则,将其抛入无限循环。