301在动态PHP网站中使用.htaccess重定向

时间:2012-09-15 11:54:47

标签: php apache mod-rewrite seo

我想问你一个关于301网址重定向的问题。所以,我有一个网站,以前的URL曾经是:

http://www.sample.com/tutorials.php?name=sample

但是,现在是:

http://www.sample.com/tutorials/programming/sample.php

因此,您可以得出结论,新URL的语法是:

http://www.sample.com/tutorials/(name of the category)/(value of the variable).php

我一直在玩301重定向,但在使用此代码时出现500内部服务器错误:

RewriteEngine On
RewriteCond %{COND ^tutorials.php?name=sample$ HTTP/1.1} ^[A-Z]{3,9}\ /tutorials\.php\?name=([^&\ ]+)
RewriteRule ^ /tutorials/programming/%1.php [L,R=301]

我还尝试创建自己的301重定向代码,它没有给我500内部服务器错误,但我不知道它是否可行(我无法在localhost上测试它,因为搜索引擎没有索引本地主机)。这是:

RewriteEngine On
Redirect 301 /tutorials.php?name=$1 http://www.sample.com/tutorials/programming/(.+)\.php

所以,如果上面的代码不是很好,但如果不是,那么有人可以解释(尽可能慢,详细)如何301将我的旧网站重定向到我的新网站。正如我所提到的,我使用动态网站,我正在使用.htaccess文件(mod_rewrite)重写。

我试图尽可能详细。如果您需要其他详细信息,请随时提出。

1 个答案:

答案 0 :(得分:1)

您必须将旧链接重定向到新域。这就是你如何做到的。

使用htaccess

使用以下代码创建.htaccess文件,它将确保旧域的所有目录和页面都能正确地重定向到新域。 .htaccess文件需要放在旧网站的根目录中(即放置索引文件的目录)

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

除了重定向之外,我建议您联系每个反向链接网站,修改其反向链接以指向您的新网站。

注意:此.htaccess重定向方法仅适用于启用了Apache Mod-Rewrite模块化的Linux服务器。

有关更多方法,请参阅this

修改

使用以下代码创建.htaccess文件,它将确保所有进入domain.com的请求都会被重定向到www.domain.com .htaccess文件需要放在旧网站的根目录中(即放置索引文件的目录)

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]