我正在开设一个电话号码查找网站,并将它们存储到mysql数据库中。该网站有一个三页深入查找方法来查找电话号码。所以顺序的过程是:
phone-number/areacode.php?a=aaa
phone-number/prefix.php?a=aaa&b=bbb
phone-number/number.php?a=aaa&b=bbb&c=cccc
areacode.php
只显示系统中所有区号的列表。 prefix.php
只显示所有区号的列表以及系统中的相对前缀。
目前(出于搜索引擎优化目的)我们将这三个页面重写为以下内容(按上述顺序排列):
phone-number/aaa
phone-number/aaa/bbb
phone-number/aaa/bbb/cccc
我不知道为什么之前的开发人员使用斜杠但是再次出于搜索引擎优化的目的,我们希望在执行301重定向时将slashes
更改为dashes
。最终结果如下:
phone-number/aaa
phone-number/aaa-bbb
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
我不知道从哪里开始301重定向这些动态网址。
答案 0 :(得分: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]