2

我必须访问 3,000 多个 URL 301 redirect。我不小心在很多 URL 中重复了城市/州的使用,这使得它们重复且太长。if statements我可以以编程方式为需要的 URL生成 3,000多个301 redirected. 但是,这将是每一页顶部的数千行代码。这是 3,000 多个 URL 中使用这种方法的 3 个示例redirects

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由于每个重定向的独特性,我认为我不能有效地使用。每个 URL 没有一致的变量。有什么想法吗?

4

3 回答 3

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 文件本身,因为安全原因可能会被锁定。

于 2013-02-25T07:16:26.377 回答
1

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

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

于 2013-02-25T07:39:29.607 回答
0

我认为把它放在你的.htaccess文件中将是最好的解决方案。它可以很容易地实现。我也觉得这是一个比将所有逻辑都放入 PHP 文件更好的解决方案。

RewriteEngine On
Redirect 301 /old-page.html http://www.mysite.com/new-page.html
于 2013-02-25T07:17:13.163 回答