.htaccess文件重写第二条规则

时间:2019-02-27 10:42:59

标签: .htaccess mod-rewrite url-rewriting

我想为pdf文件创建规则 domain.com/folder/directory/filename.pdf 可通过 domain.com/filename.pdf 访问,因此我创建了以下规则:

RewriteRule ^([a-zA-Z0-9_\.-]*).pdf$ /images/qualita/certificati/$1.pdf [NC,L]

有效。现在,我想对另一个文件夹中的另一个文件执行相同的操作,所以我要添加第二条规则:

RewriteRule ^([a-zA-Z0-9_\.-]*).pdf$ /images/catalogo/$1.pdf [NC,L]

它不起作用。它给我错误404。 我认为这是因为第一条规则。即使我添加了[L]标志,如何使所有.pdf文件都可以访问,例如 domain.com/filename.pdf

2 个答案:

答案 0 :(得分:1)

也许像这样双重重写(未经测试)

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^([a-zA-Z0-9_\.-]*).pdf$ /images/qualita/certificati/$1.pdf

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule ^\/images\/qualita\/certificati\/([a-zA-Z0-9_\.-]*)\.pdf$ /images/catalogo/$1.pdf

答案 1 :(得分:1)

尝试一下:

RewriteCond %{DOCUMENT_ROOT}/images/qualita/certificati%{REQUEST_URI}\.pdf -f
RewriteRule ^([a-zA-Z0-9_\.-]*).pdf$ /images/qualita/certificati/$1.pdf [NC,L]
RewriteCond %{DOCUMENT_ROOT}/images/catalogo%{REQUEST_URI}\.pdf -f
RewriteRule ^([a-zA-Z0-9_\.-]*).pdf$ /images/catalogo/$1.pdf [NC,L]

这些规则将首先检查请求是否针对/images/qualita/certificati/目录,然后检查另一个目录/images/catalogo/

如果您需要先检查/images/catalogo,请先进行第三和第四行。

请注意,如果两个目录中都有相同的文件,则优先考虑第一个。