【发布时间】:2015-08-18 13:10:37
【问题描述】:
我正在尝试使用 .htaccess 和 mod_rewrite 来重定向我网站上的 URL。
我想拥有它,以便 /questions/12345 和 /users/12345 分别重定向到 /questions/display.php?id=12345 和 /users/display.php?id=12345。
我还想添加一个快捷方式,有点像 Stack Exchange,其中/q/12345/6789 被重写为/questions/display.php?id=12345&refer=6789。
到目前为止,通过severalsources,我得到了这个:
RewriteEngine On
RewriteRule ^users/([^/]+) /users/display.php?id=$1 [NC]
RewriteRule ^questions/([^/]+) /questions/display.php?id=$1 [NC]
RewriteRule ^q/([^/]+)/([^/]+) /questions/display.php?id=$1&referer=$2 [NC]
但是,当我导航到 /questions/12345 时,我收到 500 内部服务器错误 - 很明显,这不起作用。
查看 Apache 错误日志,它揭示了正在发生的事情:
AH00124:由于可能的配置错误,请求超出了 10 个内部重定向的限制。如有必要,使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。
这里出了什么问题,我应该怎么做?
【问题讨论】:
-
不会正则表达式
[^/]+也匹配文本display.php?id=吗?也许您应该调整您的正则表达式以仅匹配您感兴趣的模式,即更像^users/([0-9]+)的东西。此外,当您收到 500 错误时,您的 Apache 日志中添加了什么? 500 只是将密码返回给浏览器;您的日志应包含 500 的原因。 -
对,所以您将
/users/123/重写为/users/display.php?id=123,然后将其重写为/users/display.php?id=display.php?id=123,等等。 -
@ghoti - 错误在帖子中。但是,您的 0-9 想法似乎已经解决了它……不知何故。在答案中查一下。
-
我会让你接受的。 :)
标签: php apache .htaccess mod-rewrite