【问题标题】:Mod_Rewrite: Redirect all reqs to subdirectory so subsequent redirects don't require the subdirectoryMod_Rewrite:将所有请求重定向到子目录,因此后续重定向不需要子目录
【发布时间】:2015-03-03 11:29:22
【问题描述】:

我将根目录重定向到服务器上的子目录:

RewriteEngine On
RewriteRule ^(.*)$ /_from_git/$1 [L]

在该子目录 (_from_git/) 中也将是带有重定向的 .htaccess 文件。我希望下面的重定向使用开始 (^) 和结束 ($) 选择器完全匹配,但我不想在每次重写时都包含 ^_from_git/

所以我的问题是 - 我怎样才能修改我的 上面的根重定向,所以我的后续重定向可以 像这样:

^old_page\.html$ /new_page.html [R=301,L]

不是这样的:

^_from_git/old_page\.html$ /new_page.html [R=301,L]

谢谢!

编辑:在这里您可以看到我的 .htaccess 文件的位置:

根 .htaccess:

子目录的.htaccess:

【问题讨论】:

    标签: php regex apache .htaccess mod-rewrite


    【解决方案1】:

    如果您创建一个/_from_git/.htaccess 文件,那么您可以拥有这些规则无需在每个规则模式前加上/_from_git/

    RewriteEngine On
    
    RewriteRule ^old_page\.html$ /new_page.html [R=301,L,NC]
    

    【讨论】:

    • RewriteBase /_from_git/ ?
    • 谢谢,但我刚刚检查并添加“NC”标志并不能消除 /_from_git/.htaccess 中对“_from_git”的需要
    • NC 只是为了忽略大小写而不是其他任何东西:) 在我回复之前你删除了你之前的评论。如果这个 .htaccess 被放在 /_from_git/ 中,那么 你的规则甚至不能像 RewriteRule ^_from_git/old_page\.html$ 这样工作,因为 .htaccess 是每个目录指令,并且 URI 仅与当前目录匹配。
    • @anubhava,这是我目前必须做的(包括 ^from_git/),它确实有效。我已更新问题以包含我的目录照片,以防我的问题不清楚
    • 哥们,有2个htaccess文件,一个在root,一个在_from_git/!
    猜你喜欢
    • 2014-07-08
    • 2013-12-07
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多