mod重写目录,如果找不到文件/文件夹

use*_*610 6 apache .htaccess mod-rewrite url-rewriting

我的根目录中有一个名为"folder1"的文件夹

www.domain.com/ www.domain.com/folder1

我需要将所有请求重定向到www.domain.com,最后是404错误,发送到folder1.像这样:

www.domain.com/a_file.txt

如果a_file.txt不存在,请查看folder1:

www.domain.com/folder1/a_file.txt

我希望这对子目录的工作方式相同,如下所示:

www.domain.com/a_folder(如果根目录中不存在,则重定向)

www.domain.com/folder1/a_folder

我知道我应该使用RewriteCond%{REQUEST_FILE}!-f但我似乎无法弄明白.

pon*_*cha 17

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) folder1/$1 [L,R]
Run Code Online (Sandbox Code Playgroud)
  • 第一个rewrite-cond确保您不循环(如果文件在folder1中也不存在)
  • 第二个检查目标不是文件
  • 第三个 - 它也不是文件夹
  • 最后,重写网址.Lflag表示这是应用的最后一条规则(即使后面有规则),R表示重定向.QSA如果要将传递给原始文件的任何查询字符串参数发送到新URL,也可以添加标志