0

这是我的 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”。如何禁用此行为并仅在有人最后键入用户名时才保留重定向?

非常感谢。

4

1 回答 1

1

( RewriteConditions) 只影响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]

但是,这不应该影响根 URL 请求,即因为加号http://mywebsite.com/,您的正则表达式清楚地匹配后面的一个或多个字符。/[]+

于 2013-07-16T19:02:26.190 回答