Htaccess虚拟子域无法正常工作

时间:2013-09-09 19:07:40

标签: php apache .htaccess redirect mod-rewrite

我使用Htaccess文件重写我的网站子域名到我网站上的相关文件。 例如:

http://articles.mysite.com --> http://mysite.com/articles 我写这段代码:

RewriteCond %{HTTP_HOST} !^www.mysite.*
RewriteCond %{HTTP_HOST} ^([^.]+).mysite.*
RewriteRule ^$ ./%1 [L] 

但是当我想要使用它时:

http://articles.mysite.com/some/some --> http://mysite.com/articles/some/some

以上代码无法正常工作并将我重定向到404 NotFound Page

注意:在我的.htaccess文件的另一个地方,我有RewriteRule ^some/(.*)$ ./some.php?id=$1 [L]

1 个答案:

答案 0 :(得分:0)

只需将规则更改为:

RewriteRule ^(.*)$ /%1/$1 [L]

并添加条件以防止循环:

RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d

所以你有:

RewriteCond %{HTTP_HOST} !^www.mysite.*
RewriteCond %{HTTP_HOST} ^([^.]+).mysite.*
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule ^(.*)$ /%1/$1 [L]