对于以下示例,如果不存在1个特定文件,如何使用 RewriteCond 和 RewriteRule ,例如:
我有 htps://a.b.com/sw.js ,如果它存在则不执行任何操作。 如果 htps://abcom/sw.js 不存在,请检入 htps://abcom/folder1/sw.js 或 htps ://abcom/folder2/sw.js 即可。如果确实存在,请说 htps://abcom/folder2/sw.js ,然后将 htps://abcom/sw.js 重写为 HTPS://abcom/folder2/sw.js
我只有:
RewriteCond https://a.b.com/sw.js # exist so do nothing
RewriteCond https://a.b.com/sw.js -f # does not exist
RewriteCond https://a.b.com/folder1/sw.js -f # check if it's in folder 1 (assume it's not)
RewriteCond https://a.b.com/folder2/sw.js -f # check if it's in folder 2 (assume it is)
RewriteRule https://a.b.com/sw.js shows code from https://a.b.com/folder2/sw.js
答案 0 :(得分:0)
不确定您尝试实施的内容是否是一个好策略。 猜测可能要求的资源是一种非常不稳定的设置。您真的应该尝试在您分发的参考文献中提供具体信息,以及您想要服务或不想提供的请求。否则,您可能会遇到难以调试的各种奇怪问题,因为您从未真正了解资源之间的依赖关系。
无论如何,这里有一个重写方法的建议:
END
如果您使用此设置收到http状态500,则可能是您运行的是非常旧版本的apache http服务器。在这种情况下,请尝试将L
标记替换为.htaccess
标记...
一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(rdf_property
样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。