PHP 301重定向 - 超过3,000个动态URL

时间:2013-02-25 07:11:51

标签: php dynamic http-status-code-301

我必须{3,000}有超过3,000个网址301 redirect。我意外地在很多URL中复制了城市/州的使用,这使得它们重复且太长。我可以以编程方式为需要if statements的网址生成超过3,000 301 redirectedredirects。但是,这将是每页顶部的数千行代码。以下是使用此方法的3,000多个网址中的3个示例if($_SERVER['REQUEST_URI'] == 'central-alabama-community-college-alexander-city-alabama') { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.website.com/colleges/central-alabama-community-college-alexander-city"); exit; } if($_SERVER['REQUEST_URI'] == 'athens-state-university-athens-alabama') { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.website.com/colleges/athens-state-university-alabama"); exit; } if($_SERVER['REQUEST_URI'] == 'auburn-university-auburn-alabama') { header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.website.com/colleges/auburn-university-alabama"); exit; }

$redirects = array('central-alabama-community-college-alexander-city-alabama' => 'central-alabama-community-college-alexander-city','athens-state-university-athens-alabama' => 'athens-state-university-alabama','auburn-university-auburn-alabama' => 'auburn-university-alabama');

if(array_key_exists($_SERVER["REQUEST_URI"], $redirects)) {
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: http://www.website.com/colleges/$redirects[1]");
    exit;
    }

这种方法很有效,但我担心这是不好的做法。还有另一种方法,您可以使用关联数组。就像这样:

.htaccess

我可能有点错误,但你可以看到它应该做什么。什么是最好的方法来解决这个问题?我不认为我可以有效地使用{{1}}因为每个重定向的独特性。每个URL都没有一致的变量。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我会使用关联数组,但你可以使用换行符来保持清晰,如下所示:

$redirects = array(
    'central-alabama-community-college-alexander-city-alabama' => 'central-alabama-community-college-alexander-city',
    'athens-state-university-athens-alabama' => 'athens-state-university-alabama',
    'auburn-university-auburn-alabama' => 'auburn-university-alabama',
    'etc...', 'etc...'
);

另一个替代方法是将其存储在数据库中并以这种方式查找,这样您就不需要维护可能因安全原因而被锁定的PHP文件本身。

答案 1 :(得分:1)

我认为你应该将重定向放在数据库中,

然后使用.htaccess重定向到一个php脚本,该脚本执行301重定向到正确的URL。

答案 2 :(得分:0)

我认为将它放在.htaccess文件中将是最佳解决方案。它可以很容易地实现。我也觉得这比将所有逻辑放入PHP文件要好得多。

RewriteEngine On
Redirect 301 /old-page.html http://www.mysite.com/new-page.html