.htaccess会因非现有目录的重写条件而引发500内部错误

时间:2012-07-15 22:32:34

标签: .htaccess

我试图使用.htaccess创建一个像用户个人资料页面的Facebook 即。 http://example.com/<userid&gt;实际上会拨打http://example.com/sites/<userid&gt; /&lt; sub_page&gt; 使用以下代码:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?(.*)$ sites/$1/$2 [NC,L]

Options -Indexes

ErrorDocument 404 /missing.html
ErrorDocument 403 /forbidden.html

当文件夹站点/&lt; userid&gt;时,它非常有效。存在,但是当它没有引发500内部错误时。我已经浏览过互联网,但无法超越这一点。有人可以帮忙解决这个问题。 我可以拥有包含所有现有文件夹的文本文件,并以某种方式使用它来生成.htaccess中的列表吗?

提前致谢!! :)

1 个答案:

答案 0 :(得分:1)

您的重写规则正在循环播放。正则表达式^([^/]+)/?(.*)$与重写的URI sites/something/something匹配,并且它无限循环(因此您的URI开始如下所示:sites/sites/sites/sites/sites/sites/sites/sites/sites/something/something等。)

调整正则表达式,使其与第一个([^/]+)/?表达式之后的表达式不一致或添加其他条件:

RewriteCond %{REQUEST_URI} !^/sites/