与标题暗示的一样,我想将一个子目录重定向到另一个子目录,同时阻止对后一个子目录的直接访问。例如,我想阻止直接访问domain.com/foo
:
RewriteRule ^foo [F,NC]
但我希望domain.com/bar
重定向到domain.com/foo
:
RewriteRule ^bar/* /foo/ [R=301]
是否可以将这两个规则合并为一个,因此domain.com/bar
将加载domain.com/foo
,但domain.com/foo
将不加载domain.com/foo
?< / p>
答案 0 :(得分:1)
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# block direct access to /foo/*
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+foo[/\s] [NC]
RewriteRule ^ - [L,F]
# allow access to /foo/* via /bar/*
RewriteRule ^bar/(.*)$ /foo/$1 [L,NC]