1

我需要帮助编写 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

我对通配符和匹配语法不太擅长 - 任何帮助将不胜感激。谢谢。

4

1 回答 1

1

尝试将这些规则添加到您的文档根目录:

RewriteEngine On
RewriteRule ^/?archive/([0-9]{4})/archive/\1/(.*)$ /archive/$1/$2 [L,R=301]

这将检查任何 4 位数年份的年份是否重复。所以:

  1. http://www.mysite.com/archive/1234/archive/2345/blah/blah什么也没做
  2. http://www.mysite.com/archive/2345/archive/2345/blah/blah被重定向到
    http://www.mysite.com/archive/2345/blah/blah
  3. 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为您的每个目录更改。

于 2013-01-08T00:12:52.817 回答