1

我不知道为什么,但是当在我的 .htaccess 文件中使用以下 RewriteRule 时,我得到一个内部服务器错误 500。我启用了 mod_rewrite 我整天都在寻找解决方案。

# Enable Rewriting  
RewriteEngine on  
# Rewrite user URLs 
RewriteRule ^(.*)/?$ users\/$1\/index.php
4

3 回答 3

1

Apache 的错误日志(通常命名为errors.log)可能提供了有关它为什么不起作用的更多信息。很可能正则表达式由于某种原因无效,我将自己测试它然后编辑这篇文章。

于 2012-08-12T22:38:22.933 回答
1

500 错误很可能是由于重定向循环造成的。

您重写任何请求以users/$1/index.php包含该 URL 本身,因此最终会出现重写循环。

尝试将您的重写规则更改为:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/users
RewriteRule ^(.*)/?$ users/$1/index.php

通过检查 URI 是否不以您开头,/users您可以避免重写循环。

于 2012-08-12T22:45:47.700 回答
0

您有一个内部重写循环。重写引擎获取一个 URI 并将其放入引擎并获得一个结果 URI。如果它们相同,则重写引擎停止,否则,它将获取它返回的 URI并通过引擎将其放回。这意味着您再次/users/something/index.php匹配并变成: ,然后等等等等。^(.*)/?$/users/users/something/index.php/index.php/users/users/users/something/index.php/index.phpusers/something/index.php/index.php

因此,您需要添加 aRewriteCond以防止 URI 在它们已经以 开头时被重写users/

# Enable Rewriting  
RewriteEngine on  
# Don't rewrite if URI starts with "users"
RewriteCond %{REQUEST_URI} !users/
# Rewrite user URLs 
RewriteRule ^(.*)/?$ users\/$1\/index.php
于 2012-08-12T22:45:23.250 回答