.htaccess将子域重定向到php文件而不在浏览器中更改URL

时间:2014-09-02 12:15:42

标签: .htaccess mod-rewrite redirect subdomain

请帮助我。

我在root中有几个php文件

domain.com/dog.php
domain.com/cat.php
...

当用户访问dog.domain.com时,我需要显示domain.com/dog.php但请将dog.domain.com保留在浏览器网址中

我已经有了这个.htaccess:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*).domain.com$
RewriteRule .* http://domain.com/%1.php [L]

当我输入dog.domain.com时它工作正常并显示domain.com/dog.php内容,但现在它将浏览器中的URL更改为domain.com/dog.php

如何解决?

P.S。通配符DNS记录已打开(已捕获所有子域* .domain.com)

1 个答案:

答案 0 :(得分:0)

如果* .domain.com在同一个vhost中定义,则必须在那里使用相对的RewriteRule:RewriteRule ^.*$ /%1.php [L])。如果没有,则必须将[L]替换为[P],并确保已加载mod_proxy。见https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

最后但同样重要的是,您可能希望将RewriteCond更新为不区分大小写:RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]