.htaccess指令冲突“DocumentRoot change”+“始终显示子域”

时间:2010-12-15 15:31:43

标签: .htaccess mod-rewrite

我进行了重写,将我的DocumentRoot从/public_html更改为/public_html/MAIN,效果很好。

RewriteRule ^$ /MAIN/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/MAIN/
RewriteRule ^(.*)$ /MAIN/$1

现在,如果我尝试添加以下指令以始终显示www子域,则它不再正常运行...

RewriteCond %{http_host} ^domain.com [nc]  
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

访问http://domain.com/会导致重写为http://www.domain.com/MAIN/,这不是我想要的。 我不希望MAIN子目录可见。

我错过了什么?

1 个答案:

答案 0 :(得分:3)

^(.*)$模式捕获当前URI,无论它位于位置栏中还是内部重定向。其中一个解决方案应该有效:

  • 首先放置子域重定向
  • $1替换为变量,例如%{REQUEST_URI}