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

时间:2012-06-18 02:38:31

标签: 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但我似乎无法弄明白。

1 个答案:

答案 0 :(得分:16)

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