如果请求的文件在 a/b/c.jpg 中不存在,则在 /old/a/b/c.jpg 中搜索

如果请求的文件在 a/b/c.jpg 中不存在,则在 /old/a/b/c.jpg 中搜索

我正在使用 apache 2.2,它为一个网站提供服务,其中的部分内容已移动到不同的目录。如果请求的文件(无论是 php 还是 jpg 或其他文件)不存在,有没有办法对 .htacces 文件进行某种重写规则,在前面添加一个目录名并再试一次?

例如:

如果请求 URL 为 a/b/c.jpg 且不存在,

尝试在 /old/a/b/c.jpg 中搜索它。

谢谢!

答案1

我认为你可以用(检查文件是否存在)来做到这-f一点。尝试以下方法(未经测试):

RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} ! -f
RewriteRule ^(.*)$ /old/$1 [L,R=301]

編輯:修正了拼写错误。

答案2

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/old/
RewriteRule ^(.*)$ /old/$1 [L,QSA]

我认为还需要检查目录。并添加最后的RewriteCond以避免递归重写。

相关内容