mod rewrite directory if file/folder not found

不羁岁月 提交于 2019-12-18 13:29:20

问题


I have a folder named "folder1" in my root directory

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

I need to redirect all the requests to www.domain.com that turn up to be a 404 error, to folder1. Like so:

www.domain.com/a_file.txt

If a_file.txt doesn't exist, look in folder1:

www.domain.com/folder1/a_file.txt

I want this to work the same for subdirectories, like so:

www.domain.com/a_folder (redirect if it doesn't exist in the root)

www.domain.com/folder1/a_folder

I know I should use RewriteCond %{REQUEST_FILE} !-f but I can't seem to figure it out.


回答1:


RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) folder1/$1 [L,R]
  • The first rewrite-cond ensures you do not loop (in case the file does not exist inside folder1 either
  • The second one checks that target is not a file
  • The third - that it is not a folder either
  • And, finally, rewrite the url. L flag means this is the last rule applied (even if there are rules after it), R means redirect. You can also add QSA flag if you want any query-string parameters passed to the original be sent to the new url


来源:https://stackoverflow.com/questions/11076385/mod-rewrite-directory-if-file-folder-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!