这是我的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”。如何禁用此行为并仅在有人在末尾键入用户名时保留重定向?
非常感谢。
答案 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/
,因为/
加号导致您的正则表达式与[]+
之后的一个或多个字符明显匹配。