Apache 重定向到子域,然后用.htaccess重写
我看了几十个例子,但仍然有问题。我正在尝试重定向和重写以下内容: 我的长URL是: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
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行)放在一起!非常感谢。