Regex 使用通配符的不正确子目录需要htaccess重定向规则

Regex 使用通配符的不正确子目录需要htaccess重定向规则,regex,.htaccess,wildcard,subdirectory,Regex,.htaccess,Wildcard,Subdirectory,我需要帮助编写htaccess重定向或重写规则(mod_rewrite.c)来处理以下情况: http://www.mysite.com/archive/[YEAR]/archive/[YEAR]/[CORRECT-PATH] 应重定向到: http://www.mysite.com/archive/[年份]/[路径] 基本上,有些外部链接在路径的/archive/[YEAR]/部分错误地折叠起来,其中应该只有一个实例。我每年都有一个子目录(/archive/2011、/archive/

我需要帮助编写htaccess重定向或重写规则(mod_rewrite.c)来处理以下情况:


http://www.mysite.com/archive/[YEAR]/archive/[YEAR]/[CORRECT-PATH]

应重定向到:


http://www.mysite.com/archive/[年份]/[路径]

基本上,有些外部链接在路径的
/archive/[YEAR]/
部分错误地折叠起来,其中应该只有一个实例。我每年都有一个子目录(/archive/2011、/archive/2012,等等)——这些目录是单独Drupal安装的根目录——每个目录都有自己的.htaccess文件(这让我大吃一惊)

[CORRECT-PATH]
位通常是Drupal页面的别名,例如:

http://www.mysite.com/archive/2012/winners/all


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

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

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

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

    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

    后一个选项成功了!谢谢我以前也尝试过类似于第一个选项的代码,但效果并不理想,可能是因为这些子目录中缺少重写库。如果子目录在自己的目录中丢失,子目录是否继承父目录.htaccess规则?后一个选项做到了!谢谢我以前也尝试过类似于第一个选项的代码,但效果并不理想,可能是因为这些子目录中缺少重写库。如果子目录在其自己的目录中丢失,子目录是否继承父目录.htaccess规则?