【问题标题】:.htaccess redirect urls containing dynamic segments.htaccess 包含动态段的重定向 url
【发布时间】:2014-05-24 14:22:31
【问题描述】:

我正在开发一个查找电话号码并将其存储到 mysql 数据库的网站。该网站有一个三页的向下钻取方法来查找电话号码。所以按顺序的过程是:

  1. phone-number/areacode.php?a=aaa
  2. phone-number/prefix.php?a=aaa&b=bbb
  3. phone-number/number.php?a=aaa&b=bbb&c=cccc

areacode.php 仅显示系统中所有区号的列表。 prefix.php 仅显示系统中所有区号以及相关前缀的列表。

目前(出于 SEO 目的)我们将这三个页面重写为以下内容(按上述顺序):

  1. phone-number/aaa
  2. phone-number/aaa/bbb
  3. phone-number/aaa/bbb/cccc

我不知道为什么以前的开发人员使用斜杠,但出于 SEO 目的,我们希望在执行 301 重定向时将 slashes 更改为 dashes。最终结果如下所示:

  1. phone-number/aaa
  2. phone-number/aaa-bbb
  3. phone-number/aaa-bbb-cccc

这是.htaccess中用于此的当前代码

RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteRule phone-number/([0-9]{3})/([0-9]{3})/([0-9]{4}) /phone-number/number.php?a=$1&b=$2&c=$3
RewriteRule phone-number/([0-9]{3})/([0-9]{3}) /phone-number/prefix.php?a=$1&b=$2
RewriteRule phone-number/([0-9]{3}) /phone-number/areacode.php?a=$1

我不知道从哪里开始对这些动态 URL 进行 301 重定向。

【问题讨论】:

    标签: apache .htaccess mod-rewrite redirect http-status-code-301


    【解决方案1】:

    你可以有这样的代码:

    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
    
    # convert / to -
    RewriteRule ^(phone-number)/([0-9]{3})/([0-9]{3})/([0-9]{4})/?$ /$1/$2-$3-$4 [L,R=301]
    RewriteRule ^(phone-number)/([0-9]{3})/([0-9]{3})/?$ /$1/$2-$3 [L,R=301]
    
    # rewrite to php handler
    RewriteRule ^phone-number/([0-9]{3})-([0-9]{3})-([0-9]{4})/?$ /phone-number/number.php?a=$1&b=$2&c=$3 [L,QSA]
    RewriteRule ^phone-number/([0-9]{3})-([0-9]{3})/?$ /phone-number/prefix.php?a=$1&b=$2 [L,QSA]
    RewriteRule ^phone-number/([0-9]{3})/?$ /phone-number/areacode.php?a=$1 [L,QSA]
    

    【讨论】:

      猜你喜欢
      • 2015-10-01
      • 2021-06-30
      • 2016-09-18
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-22
      • 1970-01-01
      相关资源
      最近更新 更多