如何使用.htaccess将root重定向到子目录

时间:2014-08-16 02:03:16

标签: regex apache .htaccess mod-rewrite redirect

我目前正在使用共享托管,无法将我的文件放在“public_html”文件夹之外。

要解决此问题,我想使用.htaccess文件中的以下脚本将我的“root”站点重写到子目录:

RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteRule ^(.*)$ /subdir/$1

除非我导航到 www.example.com/subdir / ,否则效果很好。该URL不会重定向到任何位置,它只显示子目录。这是相对网址等问题。

有没有办法继续将我的root重写到子目录,同时还将 www.example.com/subdir / 重写为 www.example.com

1 个答案:

答案 0 :(得分:1)

您可以在root .htaccess中使用此规则:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{REQUEST_URI} !^/subdir/ [NC]
RewriteRule ^(.*)$ subdir/$1 [L]

并在/subdir/.htaccess中使用此规则:

RewriteEngine On
RewriteBase /subdir/

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$
RewriteCond %{THE_REQUEST} /subdir/(\S*)\s
RewriteRule ^ /%1? [R=302,L,NE]