首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有当特定文件不存在时,htaccess才重写

只有当特定文件不存在时,htaccess才重写
EN

Stack Overflow用户
提问于 2018-03-29 15:56:56
回答 1查看 128关注 0票数 0

对于下面的示例,如果只有一个特定文件不存在,如何使用RewriteCondRewriteRule,例如:

我有htps://a.b.com/sw.js,,如果它存在,那就什么也不做。如果htps://a.b.com/sw.js不存在,那么签入htps://a.b.com/folder1/sw.js,或htps://a.b.com/folder2/sw.js.如果它确实存在于htps://a.b.com/folder2/sw.js,中,那么将htps://a.b.com/sw.js重写为htps://a.b.com/folder2/sw.js

我只有:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-29 16:07:38

不确定你试图实施的是一个好的策略。猜测所请求的资源闻起来很不稳定。您确实应该在发送的引用以及您想要服务器或不想服务的请求方面做到具体。否则,您可能会遇到难以调试的各种奇怪问题,因为您从未真正了解资源之间的依赖关系。

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

代码语言:javascript
复制
RewriteEngine on
RewriteCond %{REQUEST_URI} -f
RewriteRule ^ - [PT,END]

RewriteCond /folder1%/{REQUEST_URI} -f
RewriteRule ^/?(.+)/?$ /folder1/$1 [END]

RewriteCond /folder2%/{REQUEST_URI} -f
RewriteRule ^/?(.+)/?$ /folder2/$1 [END]

如果使用此设置接收到http状态500,则很有可能操作一个非常旧版本的apache http服务器。在这种情况下,尝试用END标志替换L标志..。

还有一个一般性提示:您应该总是倾向于将这样的规则放置在http服务器(虚拟)主机配置中,而不是使用动态配置文件(.htaccess样式文件)。众所周知,这些文件容易出错,很难调试,而且它们确实减慢了服务器的速度。只有当您无法控制主机配置(请阅读:真正便宜的主机服务提供商)或应用程序依赖于编写自己的重写规则(这显然是一场安全噩梦)时,它们才会被支持。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49560392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档