Apache 如果找不到文件/文件夹,则修改重写目录

Apache 如果找不到文件/文件夹,则修改重写目录,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我的根目录中有一个名为“folder1”的文件夹 www.domain.com/ www.domain.com/folder1 我需要将所有出现404错误的请求重定向到www.domain.com,再重定向到folder1。像这样: www.domain.com/a_file.txt 如果_file.txt不存在,请查看文件夹1: www.domain.com/folder1/a_file.txt 我希望它对子目录也能起同样的作用,如下所示: www.domain.com/a_文件夹(如果根目录

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

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

我需要将所有出现404错误的请求重定向到www.domain.com,再重定向到folder1。像这样:

www.domain.com/a_file.txt

如果_file.txt不存在,请查看文件夹1:

www.domain.com/folder1/a_file.txt

我希望它对子目录也能起同样的作用,如下所示:

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

www.domain.com/folder1/a_文件夹

我知道我应该使用RewriteCond%{REQUEST_FILE}-但我似乎不明白

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

我写的正是…+1,用于循环和解释。