Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess将子域重定向到php文件,而不更改浏览器中的URL_.htaccess_Mod Rewrite_Redirect_Subdomain - Fatal编程技术网

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

.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 .*

请帮帮我

我在根目录中有几个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 .* 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的第二个表),它应该是一个内部重定向。。。