我已设法通过这些规则通过.htaccess切换https中的所有网站:
RewriteCond %{HTTPS} off [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php [QSA,L]
现在我遇到了问题,因为有些第三方服务使用的是POST网址:
http://sub.mydomain.com/agreg/sms/service
被拒绝是因为他们被重定向并且现在获得了。
我想在^/agreg/
方案的每个网址上禁用此“强制https”功能。我试过了
RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} !^/agreg
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
但现在已重定向到http://sub.mydomain.com/app.php
我在这里想念的是什么?
非常感谢你的帮助!
答案 0 :(得分:2)
问题:
我想在每个网址上禁用此“强制https”内容 ^ / agreg / scheme。我试过了
RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} !^/agreg
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
但现在已重定向到
http://sub.mydomain.com/app.php
嗯,根据规则,这是一个有效的结果。
第二条规则将所有内容重定向到app.php
。这一个:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.php [QSA,L]
虽然传入的URL http://sub.mydomain.com/agreg/sms/serviceSo
例如从第1条规则中排除,但它会在第2条规则中重写。
解决方案:
假设预期的行为是从BOTH规则中排除任何包含字符串agreg
的URL,它应该是这样的:
RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} !/agreg [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/agreg [NC]
RewriteRule ^(.*)$ /app.php [QSA,L]
重写条件仅对下一个规则有效。必须将相同的NOT条件添加到最后一个规则块。