【问题标题】:301 redirect with .htaccess in dynamic PHP website在动态 PHP 网站中使用 .htaccess 进行 301 重定向
【发布时间】:2012-09-15 11:54:46
【问题描述】:

我想问你一个关于 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 Internal server error,但我不知道它是否有效(我无法在 localhost 上测试它,因为搜索引擎不索引本地主机)。这里是:

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

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

我已尽量详细说明。如果您需要更多详细信息,请随时询问。

【问题讨论】:

    标签: php apache mod-rewrite seo


    【解决方案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] 
    

    【讨论】:

    • 好的,我添加了你给我的 .htaccess 代码。只是问一下,现在所有查询:sample.com/tutorials.php?name=something,将被重定向到:http://www.sample.com/tutorials/programming/something.php
    • 好的,非常感谢!再问你一件事,我可以把这个: RewriteCond %{HTTP_HOST} ^sample\.com$ 放在 : RewriteRule (.*) sample.com/$1 [R=301,L] 之前
    • 对不起,我没有正确看到它。当我尝试this时,我得到了 404。。
    • 你想让我发布我的整个 .htaccess 代码(我刚刚发布了代码 sn-p 来回答我的问题,你需要整个代码吗)?
    • 那么,使用该代码,我将正确重定向它(我的意思是,正如我在#1 评论中提到的那样重定向它)?另外,我把一些东西大写了,比如 R-s : RewriteRule 和 nc : NC,代码可以工作吗?
    猜你喜欢
    • 2010-12-03
    • 2017-09-21
    • 2017-04-15
    • 2015-08-15
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多