任何建议,我有大约300页需要设置301重定向到我的新域。任何人都可以解释如何以编程方式执行此操作,我真的希望不必单独完成!!!
我在CentOS 5.4上运行Apache服务器
旧页面 - >
http://example.com/examplePage.php?id=289
新页面 - >
http://gallery.example.com/en-US/theme/6
此问题是旧域无论如何都与新域无关。 2个具有完全不同ID值的独立数据库。这是对id值未保持同步的网站的彻底检查。我认为这是我的问题成为我需要保持SEO值完整的每个重定向的手动输入的地方。
如果有人可以建议如何在PHP中以编程方式进行,那将是很好的,否则我担心我的.htaccess文件中会有数百个条目。
答案 0 :(得分:1)
尝试使用网址重写将所有网页重定向到同一301页面。 Url重写在每台服务器上的工作方式不同。对于Apache,您有mod_rewrite。
答案 1 :(得分:1)
从您的问题来看,很难给出具体的答案,但我之前已经遇到过几十次你的情况,这就是我的建议:
正如Dani所说,使用Apache mod_rewrite来处理重定向,如果可以将它们放在站点根目录下的.htaccess文件中。
如果您只是更改域名,但所有页面网址都保持不变,那么您的.htaccess文件中只需要一行:
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
但是,如果您的页面网址正在更改,您可以使用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;
}
减少创建重定向的努力的唯一方法是,如果您尝试重定向的网址中存在常见模式,例如
/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]
如果您告诉我们更多有关您的情况并提供一些示例网址,我们可以提供进一步的帮助。