PHP:重定向不存在的URL的最佳方法?

时间:2011-12-02 18:02:50

标签: php url redirect

我有一个网站,我正在使用/ landing-page /文件夹,我将制作一些着陆页。我希望能够在广告中添加/lp/而不是/landing-page/的网址,并将其中/lp/的网址替换为/landing-page/

因此: www.site.com/lp/ipad-inspections 会自动重定向到: www.site.com/landing-page/ipad-inspections

我想在没有/lp/文件夹和第二页对应每个目标网页的情况下执行此操作。我的想法是让404页面检查网址并重定向,但我似乎无法让以下工作:

<?php /* Automatic redirect for landing pages */
$current_loc = $_SERVER['REQUEST_URI'];
$short_lp = '/lp/';
$long_lp = '/landing-page/';
if (strpos($current_loc, $short_lp)) {
    $current_loc = str_replace($short_lp, $long_lp, $current_loc, 1);
    header("location: ".$current_loc);
}

我在这里做错了什么,我的页面空白了?我已将其缩小到if语句中的第一行,这会导致页面崩溃。

如果用apache有更好的方法吗?我可以在htaccess中添加一些行吗?

2 个答案:

答案 0 :(得分:5)

RedirectPermanent /lp /landing-page
你的.htaccess中的

应该可以解决问题。最好在它到达PHP阶段之前进行这种无条件重定向。它本质上是Apache中的“自由”操作,并为整个解析/编译/执行PHP阶段保存服务器。

答案 1 :(得分:1)

保留它,因为你已经完成它,但包括301永久移动的标题。

header ('HTTP/1.1 301 Moved Permanently');
header ('Location: '.$location);

还要尝试绝对引用您的网址,以便加入http://www.domain.com/

<强>更新

如果您想使用htaccess重定向,请尝试

redirect 301 /lp/landing-page/ http://www.domain.com/new.html