我有一个带有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.
你能帮助我,让我知道如何修复这个表达/创建一个新表达。?