Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.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
Apache 重定向到子域,然后用.htaccess重写_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 重定向到子域,然后用.htaccess重写

Apache 重定向到子域,然后用.htaccess重写,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我看了几十个例子,但仍然有问题。我正在尝试重定向和重写以下内容: 我的长URL是: http://old.domain.com/index.php?AssetID={long_guid_here} 我已成功重定向到: http://old.domain.com/{long_guid_here} 但现在我需要把整个事情重新定位到: http://new.domain.com/index.php?AssetID={long_guid_here} 让它看起来很漂亮: http://new.dom

我看了几十个例子,但仍然有问题。我正在尝试重定向和重写以下内容:

我的长URL是:

http://old.domain.com/index.php?AssetID={long_guid_here}
我已成功重定向到:

http://old.domain.com/{long_guid_here}
但现在我需要把整个事情重新定位到:

http://new.domain.com/index.php?AssetID={long_guid_here}
让它看起来很漂亮:

http://new.domain.com/{long_guid_here}
下面是重定向,但不是“好”部分:

试试这个:

RewriteCond %{HTTP_HOST} ^old.domain.com$
RewriteRule ^(.*)$ http://new.domain.com/$1 [L,QSA,R=301]
注意:您必须在new.domain.com中添加一个.htaccess文件,该文件可以从nice重写为normal

编辑

如果new.domain.com指向与old.domain.com相同的目录(该目录包含相同的htaccess文件),则也添加以下行:

RewriteCond %{HTTP_HOST} ^new.domain.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?AssetID=$1 [L,QSA]
试试这个:

RewriteCond %{HTTP_HOST} ^old.domain.com$
RewriteRule ^(.*)$ http://new.domain.com/$1 [L,QSA,R=301]
注意:您必须在new.domain.com中添加一个.htaccess文件,该文件可以从nice重写为normal

编辑

如果new.domain.com指向与old.domain.com相同的目录(该目录包含相同的htaccess文件),则也添加以下行:

RewriteCond %{HTTP_HOST} ^new.domain.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?AssetID=$1 [L,QSA]

这就是问题所在,它实际上是同一个虚拟主机。两个子域都在那里,我们现在只是叫它别的东西。我需要按顺序进行重定向和重写。如果要向PHP脚本发送任何其他查询字符串值,请确保使用
QSA
标志。这给了我:
http://old.domain.com/{long\u guid\u here}
,这不正确。记住,人们不会使用新域名,即使它是一个服务器别名。你添加了所有的5行吗?这应该会让用户重定向到新域,然后重写到索引文件。很抱歉,我没有将这两个集合(全部5行)放在一起!非常感谢。这就是问题所在,它实际上是同一个虚拟主机。两个子域都在那里,我们现在只是叫它别的东西。我需要按顺序进行重定向和重写。如果要向PHP脚本发送任何其他查询字符串值,请确保使用
QSA
标志。这给了我:
http://old.domain.com/{long\u guid\u here}
,这不正确。记住,人们不会使用新域名,即使它是一个服务器别名。你添加了所有的5行吗?这应该会让用户重定向到新域,然后重写到索引文件。很抱歉,我没有将这两个集合(全部5行)放在一起!非常感谢。