我的旧网站结构按年份组织了城市网址,如下:
..我需要所有重定向到这个新网址的人:
我可以通过以下方式获取文件夹:
RewriteEngine On
RewriteRule ^2010/(.+?)(-[0-9]+)?$ /cities/$1 [L,R=301]
RewriteRule ^2011/(.+?)(-[0-9]+)?$ /cities/$1 [L,R=301]
RewriteRule ^2012/(.+?)(-[0-9]+)?$ /cities/$1 [L,R=301]
RewriteRule ^2013/(.+?)(-[0-9]+)?$ /cities/$1 [L,R=301]
但它的结果是404,因为文件名不完全相同。
我看到的模式是获取OLD网址(旧金山)的前两个字,并手动提供新网址,pseduo-code:
if found san-francisco redirect /cities/san_francisco_ca
if found honolulu redirect /cities/honolulu_hi
...但我不确定如何写一个像这样复杂的正则表达式。
答案 0 :(得分:1)
RewriteEngine On
RewriteRule ^201\d/(san)-(antonio).*\.html$ /cities/$1_$2_tx [L,R=301,NC]
RewriteRule ^201\d/(phoenix).*\.html$ /cities/$1_az [L,R=301,NC]
RewriteRule ^201\d/(honolulu).*\.html$ /cities/$1_hi [L,R=301,NC]
RewriteRule ^201\d/(houston).*\.html$ /cities/$1_tx [L,R=301,NC]
RewriteRule ^201\d/(dallas).*\.html$ /cities/$1_tx [L,R=301,NC]
RewriteRule ^201\d/(washington).*\.html$ /cities/$1_dc [L,R=301,NC]
RewriteRule ^201\d/(philadelphia).*\.html$ /cities/$1_pa [L,R=301,NC]
RewriteRule ^201\d/(atlanta).*\.html$ /cities/$1_ga [L,R=301,NC]
RewriteRule ^201\d/(rochester).*\.html$ /cities/$1_ga [L,R=301,NC]
RewriteRule ^201\d/(minneapolis).*\.html$ /cities/$1_mn [L,R=301,NC]
RewriteRule ^201\d/(chicago).*\.html$ /cities/$1_il [L,R=301,NC]
RewriteRule ^201\d/(new)-(york).*\.html$ /cities/$1_$2_ny [L,R=301,NC]
RewriteRule ^201\d/nyc.*\.html$ /cities/new_york_ny [L,R=301,NC]
RewriteRule ^201\d/(boston).*\.html$ /cities/$1_ma [L,R=301,NC]
RewriteRule ^201\d/(seattle).*\.html$ /cities/$1_wa [L,R=301,NC]
RewriteRule ^201\d/(denver).*\.html$ /cities/$1_co [L,R=301,NC]
RewriteRule ^201\d/(san)-(francisco).*\.html$ /cities/$1_$2_ca [L,R=301,NC]
RewriteRule ^201\d/(st).?.(louis).*\.html$ /cities/$1_$2_mo [L,R=301,NC]
在那里,你会看到我的一些特殊情况。
<强>描述强>
NC
标志会消除区分大小写。
如果您需要更多信息,请与我们联系。
另一面
正如有些人提到的另一种方法是让一个包含文件只是为你做这些重定向而不是使用htaccess
这将允许你有一个城市和州的数据库,并在下面做不那么独特。
答案 1 :(得分:0)
试试这个:
RewriteEngine On
RewriteRule ^2010/([a-z]*)-([a-z]*)-details(-[0-9])*.html$ /cities/$1_$2_ca [R=301,L]
或者:
RewriteEngine On
RewriteRule ^2010/([a-z]*)-([a-z]*)-([a-z]*)(-[0-9])*.html$ /cities/$1_$2_ca [R=301,L]
访问时 http://www.mywebsite.com/2010/san-francisco-details.html 要么 http://www.mywebsite.com/2010/san-francisco-details-1.html
您将被重定向到 http://www.mywebsite.com/cities/san_francisco_ca
我不确定'_ca'部分在原始网址中的位置,所以我手动添加了它。