仅在url具有特定值的情况下重定向

时间:2018-07-22 00:40:29

标签: php redirect webserver url-redirection

因此,我已将网站从site.com移至sub.site.com。我还移动了预订系统。

我是否可以在site.com的index.php上安装PHP代码,以检查用户是否希望site.com/unbook.php将其自动重定向到sub.site.com/unbook.php

最理想的选择是“如果URL中除了site.com以外的任何内容,则重定向所有内容”

类似

$urlafter = explode("site.com", $url);
if (strlen ($urlafter[1]) > 0 ) {
    header("Location: sub.site.com".$urlafter[1]);
    exit();
}

或者使用$_SERVER[REQUEST_URI]甚至是.htaccess之类的东西会更好

-编辑-

不可重复,因为它们仅显示.htaccess答案,我更喜欢PHP

1 个答案:

答案 0 :(得分:0)

对于场景,使用Htacces更好。 在site.com的.htaccess文件中,您可以设置以下规则进行重定向:

Redirect 301 / http://sub.site.com/

301用于永久重定向。
如果重定向是临时的,则可以改用302。

在Php中,您可以使用以下代码替换域:

$uri = $_SERVER['REQUEST_URI'];
$old_domain = 'yoursite.com';
$new_domain = 'sub.yoursite.com';

$old_domain_pos = strpos($url, $old_domain);

$redirect_url = substr($url, 0, $old_domain_pos).$new_domain.substr($url, ($old_domain_pos+strlen($old_domain)));

以上代码仅替换一次域,而其他所有内容均保持不变。 如果您的网址如下所示,则域可能在查询字符串中重复,而这些字符串本身需要替换。

http://www.yoursite.com/get/?assset=www.yoursite.com/imgs/pic01.png

然后您可以考虑使用string_replace方法。

$redirect_url = str_replace($old_domain, $new_domain, $url);