1

我正在尝试使用 .htaccess 即制作一个类似于 facebook 的用户个人资料页面。http://example.com/<userid > 将使用以下代码实际调用http://example.com/sites/<userid >/<sub_page >:

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

当文件夹 sites/<userid> 存在时它工作得很好,但当它不存在时它会引发 500 内部错误。我已经搜索了互联网,但无法超越这一点。有人可以帮忙吗?我可以拥有一个包含所有现有文件夹的文本文件,并以某种方式使用它在 .htaccess 中生成一个列表吗?

提前致谢!!:)

4

1 回答 1

1

您的重写规则正在循环。正则表达式^([^/]+)/?(.*)$与重写的 URI 匹配,sites/something/something并且无限循环(因此您的 URI 开始看起来像:sites/sites/sites/sites/sites/sites/sites/sites/sites/something/something等)。

要么调整你的正则表达式,使其与第一个([^/]+)/?表达式之后的内容不完全匹配,要么添加一个额外的条件:

RewriteCond %{REQUEST_URI} !^/sites/
于 2012-07-15T22:38:50.130 回答