代码之家  ›  专栏  ›  技术社区  ›  pixeline

.htaccess将根目录重定向到子文件夹

  •  3
  • pixeline  · 技术社区  · 15 年前

    我希望mod eu rewrite将所有请求重定向到不存在的文件和文件夹,并将所有请求重定向到主文件夹(“根”)到子文件夹。所以我是这样设置的:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f [NC]
    RewriteCond %{REQUEST_FILENAME} !-d [NC,OR]
    RewriteCond %{REQUEST_URI} / [NC]
    RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA]
    

    不幸的是,它不起作用:如果我请求example.com/public/它会重定向到我的处理脚本(那么重定向到my/subfolder/index.php?app=public)尽管文件夹“public”存在。 请注意,请求domain.com/正确重定向到my/subfolder/index.php

    为什么会这样?

    1 回复  |  直到 14 年前
        1
  •  7
  •   szemian    14 年前

    它不起作用,因为您的最后一个条件不仅与根匹配,而且与其中包含/的任何URI都匹配,这基本上就是一切。请尝试以下操作:

    RewriteEngine on
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d [OR]
    RewriteCond %{REQUEST_URI} ^/$
    RewriteRule ^(.*)$ /my/subfolder/$1 [L,QSA]
    

    请注意,不需要[nc],因为您不想匹配任何字母,所以实际上不需要“no case”。

    希望它有帮助。