首页 > 解决方案 > 使用 htaccess,仅在 url 包含查询字符串但允许站点资源(CSS、JS 等)工作时才允许访问站点?

问题描述

我知道这方面有很多问题,但我还没有找到一个符合我具体需求的问题。具体来说,我有一个客户想要阻止访问该站点,除非他们在 url 中有一个特定的字符串作为查询参数。

https://sub.domain.com/?someStringHere

我目前在 htaccess 中有这个:

RewriteEngine On
RewriteCond %{QUERY_STRING} !^someStringHere$ [NC]
RewriteRule ^.*$ http://www.google.com/ [L,R]

这很好用,除了它会阻止加载所有站点资源(CSS、JS 和图像),例如:

<link rel="stylesheet" href="/css/style.css">

如果我再添加:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

然后它允许在没有查询字符串的情况下进行访问,所以如果我做了一些愚蠢的事情,我很抱歉,但我很难过。感谢您为我提供的任何帮助!

标签: apache.htaccess

解决方案


请尝试以下代码。我刚刚为公共资产添加了一条规则。

RewriteEngine On
RewriteCond %{QUERY_STRING} !^someStringHere$ [NC]
RewriteRule !\.(js|gif|css|jpg|png)$ http://www.google.com/ [L,R]

我可以向你推荐这个 htaccess 在线测试工具:https ://htaccess.madewithlove.be/


推荐阅读