仅当特定文件不存在时才会重写htaccess

时间:2018-03-29 15:56:57

标签: php regex apache .htaccess mod-rewrite

对于以下示例,如果不存在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

1 个答案:

答案 0 :(得分:0)

不确定您尝试实施的内容是否是一个好策略。 猜测可能要求的资源是一种非常不稳定的设置。您真的应该尝试在您分发的参考文献中提供具体信息,以及您想要服务或不想提供的请求。否则,您可能会遇到难以调试的各种奇怪问题,因为您从未真正了解资源之间的依赖关系。

无论如何,这里有一个重写方法的建议:

END

如果您使用此设置收到http状态500,则可能是您运行的是非常旧版本的apache http服务器。在这种情况下,请尝试将L标记替换为.htaccess标记...

一般提示:您应该始终更喜欢将此类规则放在http服务器(虚拟)主机配置中,而不是使用动态配置文件(rdf_property样式文件)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。只有在您无法控制主机配置(读取:非常便宜的托管服务提供商)或者您的应用程序依赖于编写自己的重写规则(这是一个明显的安全噩梦)的情况下,它们才被支持作为最后一个选项。 )。