.htaccess文件重写第二条规则

.htaccess文件重写第二条规则,.htaccess,mod-rewrite,url-rewriting,.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文件创建一个规则,如 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?

可能会重复重写,就像这样(未测试)


可能是双重重写,像这样(未测试)

试试这个:

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
,请先检查第三行和第四行

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

请尝试以下操作:

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
,请先检查第三行和第四行


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

非常感谢@grupowebex,但它不起作用。第一个有(加上[L]),但第二个没有。还有,为什么要在第二次重写中使用\/images\/qualita\/certificati\/?文件应该像domain.com/file.pdf一样可访问,以便进行两次重写…我认为^([a-zA-Z0-9_\.-]*)正在获取所有url上下文。当他们转到/images/qualita/certificati/file.pdf而没有文件时,将再次转到第一条规则。也许第一条规则上的一个小的子路径可以解决这个问题,调用domain.com/pdf/file.pdfAh上的文件,你是对的,如果我在重写上放一个小的子路径,两个都可以!我会用这个,重要的是隐藏真正的文件路径。再次感谢!非常感谢@grupowebex,但它不起作用。第一个有(加上[L]),但第二个没有。还有,为什么要在第二次重写中使用\/images\/qualita\/certificati\/?文件应该像domain.com/file.pdf一样可访问,以便进行两次重写…我认为^([a-zA-Z0-9_\.-]*)正在获取所有url上下文。当他们转到/images/qualita/certificati/file.pdf而没有文件时,将再次转到第一条规则。也许第一条规则上的一个小的子路径可以解决这个问题,调用domain.com/pdf/file.pdfAh上的文件,你是对的,如果我在重写上放一个小的子路径,两个都可以!我会用这个,重要的是隐藏真正的文件路径。再次感谢!谢谢@Mohammed,我真的很喜欢这种方法,谢谢。但它仍然不起作用,我在两次重写中都得到了404。谢谢@Mohammed,我真的很喜欢这种方法,谢谢。但它仍然不起作用,我在两次重写中都得到了404。