我有一个站点,其中包含通过 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.
请注意,文件名中没有模式,并且有多种语言。因此,有必要为每个文件/子目录创建单独的规则。
由于有许多语言和文件,像这样为每种语言编写规则可能是一场噩梦:
例如,我希望文件 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.
您能否帮助我,让我知道如何修复此表达式/创建一个新表达式。?