【问题标题】:redirect old dynamic urls to seo friendly urls through htaccess通过 htaccess 将旧的动态 url 重定向到 seo 友好的 url
【发布时间】:2014-01-30 12:54:02
【问题描述】:

我查看了其他发布的问题,但似乎找不到适合我具体情况的答案。我已经建立了动态​​ url (rr.php?rrid=5),我正在切换到 seo 友好的 url (rr/5/name/) 我有这部分工作

RewriteRule ^rr/([0-9]+)/([a-z\+\-]+)/?$ /rr.php?rrid=$1 [L]

我遇到的问题是实现 301 重定向以告诉搜索引擎 URL 已更改而不会导致重定向循环。另外,我有数百个 rrid=#,我想要一种类似于上述规则的 301 方法,其中 /name/ 部分根据 rrid=#

不同

我知道有一种方法可以将 &rewrite 添加到上述规则中,但我不知道如何编写 301 重定向,而不必逐个逐个执行。

【问题讨论】:

    标签: regex apache .htaccess url mod-rewrite


    【解决方案1】:

    您需要额外的 301 处理规则。将此代码放入您的 DOCUMENT_ROOT/.htaccess 文件中:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} \s/+rr\.php\?rrrid=([0-9]+) [NC]
    RewriteRule ^ /rr/%1? [R=302,L]
    
    RewriteRule ^rr/([0-9]+)/?$ /rr.php?rrid=$1 [L,QSA]
    RewriteRule ^rr/([0-9]+)/([a-z+-]+)/?$ /rr.php?rrid=$1 [L,QSA]
    

    【讨论】:

    • rrid 总是一个数字,所以条件中的正则表达式可以是 ([0-9+]) 吗?另外,我正在尝试 301 重定向,但您有 302,这只是一个临时重定向。你这样做有什么原因吗?
    • 302 代替 301 有什么原因吗?
    • 没有具体原因,但最好只有在一切看起来都不错时才在测试中保留 302,然后将其更改为 301。原因是 301 被浏览器积极缓存。
    • 好的,所以这项工作,但我唯一担心的是当旧网址指向 rr/5 并且我在站点地图中提交的新网址是 rr/ 时,谷歌会标记我的重复内容5/姓名/。它们都会被编入索引还是您的解决方案涵盖了这一点?
    • 您的rr.php 链接看起来如何?你有/rr.php?rrid=123/rr.php?rrid=$1&name=somename吗?
    猜你喜欢
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2013-09-15
    • 2011-08-13
    • 2019-06-07
    相关资源
    最近更新 更多