我第一次尝试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]
我哪里错了?这应该是非常直接的。
答案 0 :(得分:2)
你几乎把它纠正了。您希望[^/]
匹配所有数字直到结束,而不是/
匹配所有内容但不包括下一个([\d]+)$
。在/
之后您需要user
,最后删除.php
。
RewriteEngine On
RewriteRule ^user/([\d]+)$ /user/index.php?u=$1 [L]
注意,我还从/
删除了右侧重写的前导/user
。但这可能不是必要的;除非我为自己测试,否则我永远不会记得领导/
的行为方式。
最有可能的原因是,500错误的原因是重写循环。由于你最后匹配.php,即使user/index.php
也会匹配规则,将其抛入无限循环。