重写条件[.htaccess]

soat7uwm  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(156)

我想知道为什么这个配置在通过http(端口80)向/API/client请求时返回308。
注:接收响应的设备是ARDUINO,他不处理3XX响应。

RewriteCond %{REQUEST_URI} !='/api/client'                    # ....
    #RewriteCond expr "%{REQUEST_URI} -strmatch '/api/client'"    #Doesn't work
    #RewriteCond expr "%{REQUEST_URI} !~/api/"                    #Doesn't work
    #RewriteCond !%{REQUEST_URI} ^/api/client                     #Doesn't work
    #RewriteCond %{REQUEST_URI} !^/api/client                     #Doesn't work

    RewriteCond %{SERVER_PORT} !=443
    RewriteRule ^(.*)$ https://example.com/$1 [R=308,L]

目标是将所有HTTP请求(端口80)重定向到HTTPS,但不包括发送到/API/client的请求

xriantvc

xriantvc1#

目标是将所有HTTP请求(端口80)重定向到HTTPS,但不包括对/api/client的请求
使用THE_REQUEST变量尝试此规则:

RewriteEngine On

RewriteCond %{SERVER_PORT} 80
RewriteCond %{THE_REQUEST} !/api/client [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [NE,R=308,L]

THE_REQUEST变量表示Apache从您的浏览器收到的原始请求,在执行其他重写指令后不会覆盖该请求。此变量的示例值为GET /index.php?id=123 HTTP/1.1
请确保在清除旧缓存后或从新浏览器中测试它。

相关问题