Redirect 禁用索引上的mod_重写
这是我的mod_重写代码:Redirect 禁用索引上的mod_重写,redirect,mod-rewrite,url-rewriting,Redirect,Mod Rewrite,Url Rewriting,这是我的mod_重写代码: Options +FollowSymlinks RewriteEngine on # ————————————————————————- # > URL REWRITING # ————————————————————————- RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)/diario$ hotsite/diary.php Re
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”。如何禁用此行为并仅当有人在末尾键入用户名时才保留重定向
非常感谢。重写条件只会影响紧随其后的
重写规则。因此,要停止重定向htp://mywebsite.com/aDirThatExists
likehttp://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]
但是,这不应影响根URL请求,即http://mywebsite.com/
因为您的正则表达式清楚地匹配了/
后面的一个或多个字符,因为[]+
加号。为了更好地澄清。。。mod_重写认为我在我的域url之后写的任何东西都是用户名。如果我写“mywebsite.com/aboutUs”,它会认为“aboutUs”是一个用户名,并重定向到/hotsite。即使我只写“mywebsite.com”这样的东西,它也会重定向。您的重写规则都不会重定向root,即“/”。如果您仍然被重定向,是否可以通过关闭引擎来检查?如果是,问题在其他地方,可能是另一个.htaccess
,或者您可能在httpd.conf
标记中配置了一个规则。这是导致问题的规则:RewriteRule^([a-z0-9.\u \-]+)$hotsite/index.php[L]。如果我评论这条规则,我可以再次访问“mywebsite.com”。没有其他规则或.htaccess文件。即使对于http://mywebsite.com/
?(“/”url请求)@DanielFox感谢您的赞赏。它对http://mywebsite.com/
?您可能还应该在其他行的末尾添加[L]标志,否则可能会得到类似http://www.mysite.com/hotsite/index.php/videos.php
因为它不会在比赛中停下来。@DanielFox虽然它仍然可以工作,但是添加[NC,L]是个好主意
标记所有其他重写规则。@Pjack因为,重写规则
正则表达式不包含/
这样的双重重定向不会发生。虽然这样做了,但停止重写仍然是一个很好的实践,因此建议OP。是的,它对根太Ravi Thapliyal有效了!后来我添加了另一个规则,比如:RewriteRule^ about$aboutUs.php,它被重定向到/hotsite,因为前面的规则有问题,但后来我把它放在上面提到的规则之前,现在就没事了。万一有人有同样的问题。。。