什么是最好的方式做一个301重定向的大量网页单独


What is the best way to do a 301 redirect for A LOT of pages individually?

有任何建议,我有大约300页需要设置301重定向到我的新域名。任何人都能阐明如何以编程方式做到这一点,我真的希望它不必单独完成!!

我正在运行一个Apache服务器在CentOS 5.4

旧页

http://example.com/examplePage.php?id=289

new page ->

http://gallery.example.com/en-US/theme/6

这个问题是旧域与新域无论如何都不相关。2个完全不同ID值的独立数据库。这是对id值不同步的站点的彻底检修。我认为这就是我的问题变成了手动输入每个单独的重定向,我需要保持SEO值完整。

如果有人能建议如何在PHP中编程,那就太好了,否则我担心我会在我的。htaccess文件中有数百个条目。

尝试使用url重写将所有页面重定向到相同的301页面。Url重写在每个服务器上的工作方式不同。对于Apache,你有mod_rewrite

从你的问题中很难给你一个具体的答案,但我以前遇到过几十次你的情况,以下是我的建议:

正如Dani所说,如果可以的话,使用Apache mod_rewrite来处理重定向,将它们放在站点根目录下的。htaccess文件中。

如果你只是改变域名,但所有的页面url保持不变,那么你只需要在你的。htaccess文件中的一行:

RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

但是,如果你的页面url正在改变,你可以使用Apache单独重定向它们。Apache中典型的301重定向是这样的:

redirect 301 /oldpage.htm /newpage.htm

如果由于某些原因无法使用Apache来处理重定向,可以使用PHP来处理,如下所示:

$redirects = array(
    '/old-page' => '/new-page',
    '/old-page-two.htm' => '/new-page-two'
);
if (array_key_exists($_SERVER["REQUEST_URI"],$redirects)) {
    header("Status: 301 Moved Permanently");
    header("Location:http://".$_SERVER["HTTP_HOST"].$redirects[$_SERVER["REQUEST_URI"]]);
    exit;
}

减少创建重定向的努力的唯一方法是,如果在你试图重定向的url中有共同的模式,例如

/product/123    /product-123.html
/product/456    /product-456.html
/product/789    /product-789.html

如果是这种情况,那么您可以使用正则表达式来匹配这样的模式:

RewriteRule ^product/([0-9]*)$ /product-$1.html [R=301,L]

如果你告诉我们更多关于你的情况,并给出一些示例url,我们可能能够进一步帮助。