1

我是第一次尝试 mod_rewrite,到目前为止运气不佳。我当前的 URL 格式为http://mywebsite.com/user/index.php?u=123. 如何将 URL 重写为http://mywebsite.com/user/123

到目前为止,我已经(不成功)尝试了以下,导致 500 内部服务器错误

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

我哪里错了?这应该很简单。

4

1 回答 1

2

你几乎说对了。与其[^/]匹配直到但不包括 next 的所有内容/,您希望([\d]+)$匹配所有数字直到最后。你需要一个/after user,最后,删除.php.

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

请注意,我还//user. 不过,这可能不是必需的;/除非我自己测试,否则我永远记不起它在领导下的表现。

很可能,您的 500 错误的原因是重写循环。由于您最后匹配 .php ,甚至user/index.php会匹配规则,将其投入无限循环。

于 2012-06-13T01:47:37.157 回答