Redirect 禁用索引上的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

这是我的mod_重写代码:

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
like
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]

但是,这不应影响根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,因为前面的规则有问题,但后来我把它放在上面提到的规则之前,现在就没事了。万一有人有同样的问题。。。