mod_rewrite vs files vs virtual子目录

时间:2013-05-27 09:55:09

标签: regex mod-rewrite

我有一个带有mod_rewrite创建的虚拟子目录(用于语言)的站点。 他们工作正常。 现在我需要上传一些只能通过某些子目录访问的文件。

目前我可以通过任何子目录访问任何文件。

site.com/file.txt
site.com/jp/file.txt
site.com/es/file.txt

site.com/another_file.txt
site.com/jp/another_file.txt
site.com/es/another_file.txt

site.com/third_file.txt
site.com/jp/third_file.txt
site.com/es/third_file.txt

我只需要通过相关的子目录访问这些文件,如果我尝试通过不相关的目录访问它们,它应该抛出404错误。

site.com/file.txt - for english (the only language that does not have a subdirectory)
site.com/jp/anoter_file.txt - for japaneese
site.com/es/third_file.txt - for Spanish.

请注意,文件名中没有模式,语言也很多。 因此,有必要为每个文件/子目录创建单独的规则。

由于语言和文件很多,为每种语言编写规则可能是一场噩梦:

e.g。我希望文件another_file.txt只显示在jp目录中。 所以,我必须这样排除它:

RewriteRule ^de/another_file.txt - [R=404]
RewriteRule ^fr/another_file.txt - [R=404]
RewriteRule ^es/another_file.txt - [R=404]

但我认为有更优雅的解决方案。 据我了解,这可以通过例外手段来实现。

像这样:

RewriteRule ! ^jp/another_file.txt - [R=404] - but it does not work.

你能帮助我,让我知道如何修复这个表达/创建一个新表达。?

0 个答案:

没有答案