.htaccess如何将子域重写为root和主域到子文件夹

时间:2015-10-08 10:31:32

标签: .htaccess mod-rewrite

我有以下htaccess代码:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/.*
RewriteRule ^(.*)$ subfolder/another/$1 [L]

RewriteCond %{REQUEST_URI} !^/subfolder/another/
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ subfolder/another/index.php

所以当我去domain.com时,它会转到root / subfolder / other 当我打开sub.domain.com时,它也会转到root / subfolder / another,但我希望它转到root。

所以除了上面我添加了这个:

RewriteCond %{HTTP_HOST} ^sub.domain.com$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

但它仍然转到root /子文件夹/另一个 我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您希望规则仅在您从domain.com请求网站时匹配,请创建仅在您从domain.com请求网站时匹配的条件。除此之外,我的前两个规则在一起做什么是没有意义的。

此外,当您想要匹配文字点时,请使用转义点。

RewriteCond %{HTTP_HOST} ^domain\.com$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ subfolder/another/index.php [L]

RewriteCond %{HTTP_HOST} ^sub\.domain\.com$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]