从一个子目录重定向到另一个子目录,但阻止直接访问后一个子目录

时间:2013-03-14 15:55:38

标签: apache .htaccess mod-rewrite redirect

与标题暗示的一样,我想将一个子目录重定向到另一个子目录,同时阻止对后一个子目录的直接访问。例如,我想阻止直接访问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>

1 个答案:

答案 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]