.htaccess将子域重定向到php文件,而不更改浏览器中的URL
请帮帮我 我在根目录中有几个php文件.htaccess将子域重定向到php文件,而不更改浏览器中的URL,.htaccess,mod-rewrite,redirect,subdomain,.htaccess,Mod Rewrite,Redirect,Subdomain,请帮帮我 我在根目录中有几个php文件 domain.com/dog.php domain.com/cat.php ... 当用户转到dog.domain.com时,我需要显示domain.com/dog.php,但在浏览器URL中保留dog.domain.com 我已经有了这个。htaccess: Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^(.*).domain.com$ RewriteRule .*
domain.com/dog.php
domain.com/cat.php
...
当用户转到dog.domain.com时,我需要显示domain.com/dog.php,但在浏览器URL中保留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)如果*.domain.com在同一vhost中定义,则必须在此处使用相对重写规则:
重写规则^.$/%1.php[L]
)。如果没有,则必须用[P]
替换[L]
,并确保已加载mod\u代理。看
最后但并非最不重要的一点是,您可能希望将您的
RewriteCond
更新为不区分大小写:RewriteCond%{HTTP\u HOST}^(.*).domain.com$[NC]
如果在同一vhost中定义了*.domain.com,它应该按照您所描述的那样工作。不可以。它应该是RewriteRule.*/%1.php[L]
。否则,即使使用L
标志,您也会得到一个外部重定向,因为http://
根据上的示例(参见.htaccess的第二个表),它应该是一个内部重定向。。。