我需要帮助编写htaccess重定向或重写规则(mod_rewrite.c)来处理以下情况:
http://www.mysite.com/archive/[YEAR]/archive/[YEAR]/[CORRECT-PATH]
应该重定向到:
http://www.mysite.com/archive/[YEAR]/[PATH]
基本上,有一些外部链接在路径的/archive/[YEAR]/
部分错误地加倍,其中应该只有一个实例。我每年都有一个子目录(/ archive / 2011,/ archive / 2012等) - 那些年份目录是单独Drupal安装的根源 - 每个目录都有自己的.htaccess文件(这让我绊倒)。
[CORRECT-PATH]
位通常是Drupal页面的别名,例如:
http://www.mysite.com/archive/2012/winners/all
我对通配符和匹配语法不太满意 - 任何帮助都会受到赞赏。感谢。
答案 0 :(得分:1)
尝试将这些规则添加到您的文档根目录:
RewriteEngine On
RewriteRule ^/?archive/([0-9]{4})/archive/\1/(.*)$ /archive/$1/$2 [L,R=301]
这将检查年份是否重复,任何4位数年份。这样:
http://www.mysite.com/archive/1234/archive/2345/blah/blah
什么都不做http://www.mysite.com/archive/2345/archive/2345/blah/blah
被重定向到http://www.mysite.com/archive/2345/blah/blah
http://www.mysite.com/archive/1234/blah/blah
什么也没做。再次查看您的问题后,您需要为每个/archive/[YEAR]
目录添加规则:
RewriteEngine On
RewriteBase /archive/2011/
RewriteRule ^archive/[0-9]{4}/(.*)$ $1 [L,R=301]
并更改每个目录的RewriteBase
。