如何将友好网址重定向到动态网址?

时间:2010-12-04 01:11:42

标签: php redirect query-string

在Linux上动态地将友好的浏览网址重定向到动态的最佳方式是什么?

离。
domainone.com/dir/one/two 重定向到 domaintwo.com/index.aspx?a=one&b=two

domainone.com/dir/three/four 重定向到 domaintwo.com/index.aspx?a=three&b=four

3 个答案:

答案 0 :(得分:2)

名为Location的HTTP标头是您跨主机/域重定向用户的方式。

根据您的服务器配置和用于生成HTTP标头的机制,具体实现会有所不同。 PHP中的一个示例(因为您的问题似乎被标记)是包含以下代码:

header('Location: http://domaintwo.com/index.aspx?a=one&b=two');

上面的字符串与任何其他字符串一样,因此应用适当的逻辑来提供所需的重定向URL。

域配置文件(精确路径因服务器软件和操作系统而异)或更常见的.htaccess文件中也可能产生相同的效果。如果您提供有关托管环境的更多信息,则有人可以帮助您设计所需的重写规则。我更喜欢将这种级别的智能重写放在PHP脚本中,因为我认为.htaccess文件往往更难以管理和“阅读”。

答案 1 :(得分:2)

来自Apache内部:

在服务器配置文件中,或更可能在.htaccess文件中。

您可以使用mod_rewrite执行此操作,但由于您需要重定向,因此使用mod_alias和RedirectMatch语句会更合适。

RedirectMatch 301 ^/a/([^/]+)/([^/]+)$ http://domaintwo.com/index.aspx?a=$1&b=$2

重写变体:

RewriteEngine On
RewriteBase /
RewriteRule ^/a/([^/]+)/([^/]+)$ http://domaintwo.com/index.aspx?a=$1&b=$2 [R=301,L]

请注意使用 301 ,即永久重定向,暂时使用 302 ,或者当您总是希望人们重定向而不是直接在将来访问时使用 301

答案 2 :(得分:0)

在Linux上使用Apache的一种非常标准的方法是将Apache与mod_rewrite一起使用(如何安装和配置Apache和mod_rewrite,如果它尚未设置,将取决于您的Linux发行版)

然后,在Apache配置中,您可以添加如下行:

RewriteEngine On
RewriteRule ^/a/([^/]+)/([^/]+) http://www.domaintwo.com/index.aspx?a=$1&b=$2