在索引上禁用mod_rewrite

时间:2013-07-16 18:03:03

标签: redirect mod-rewrite url-rewriting

这是我的mod_rewrite代码:

Options +FollowSymlinks
RewriteEngine on

# ————————————————————————-
# > URL REWRITING
# ————————————————————————-

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.*)/diario$ hotsite/diary.php
RewriteRule ^(.*)/recados$ hotsite/messages.php
RewriteRule ^(.*)/fotos$ hotsite/photos.php
RewriteRule ^(.*)/videos$ hotsite/videos.php
RewriteRule ^(.*)/contato$ hotsite/contact.php
RewriteRule ^([a-z0-9._\-]+)$ hotsite/index.php [L]

它就像facebook个人资料一样。每当我输入“mywebsite.com/user.name”时,它都会转到该用户页面。我也可以输入“mywebsite.com/user.name/videos”转到用户个人资料中的特定页面。

但是,我再也无法访问“mywebsite.com”了,因为它重定向到“mywebsite.com/hotsite/index.php”。如何禁用此行为并仅在有人在末尾键入用户名时保留重定向?

非常感谢。

1 个答案:

答案 0 :(得分:1)

RewriteCondition(s)仅影响紧随其后的RewriteRule。因此,要停止重定向htp://mywebsite.com/aDirThatExists,例如http://mywebsite.com/aboutUs,您需要重复重写条件

RewriteCond %{SCRIPT_FILENAME} !-d    # if not a directory
RewriteCond %{SCRIPT_FILENAME} !-f    # and not a file
RewriteRule ^([a-z0-9._\-]+)$ hotsite/index.php [L]

但是,这不应该影响根网址请求,即http://mywebsite.com/,因为/加号导致您的正则表达式与[]+之后的一个或多个字符明显匹配。