我正在构建一个preprod环境,客户端和开发人员将能够检查一切是否正常运行,但是我必须禁用所有HTTPS重定向,因为此时它将属于PROD站点监视器在请求中发送HOSTNAME。
这是我正在使用的一个例子:
RewriteCond %{HTTP_HOST} (www\.)?domain\.com
RewriteCond %{HTTP_HOST} ^s\.domain\.com
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} !^/?basket/$
RewriteCond %{REQUEST_URI} !^/?basket/add/
RewriteCond %{REQUEST_URI} !^/?basket/delete/
RewriteCond %{REQUEST_URI} !^/?basket/modify/
RewriteCond %{REQUEST_URI} !^/?basket//add/
RewriteCond %{REQUEST_URI} !^/?basket//delete/
RewriteCond %{REQUEST_URI} !^/?basket//modify/
RewriteCond %{REQUEST_URI} !^/?basket/info_panier.js
RewriteRule ^/?basket/.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
问题是,即使我访问:
http://s.domain.com/basket//coordonnees/login/
它仍然会将我重定向到HTTPS版本,但我在s.domain.com上有重写条件,说要跳过此规则......我做错了什么?
CrazyCoder
答案 0 :(得分:4)
没关系,我在两秒钟后发现它,但这可能对其他人有所帮助:
条件:
RewriteCond %{HTTP_HOST} (www\.)?domain\.com
发生冲突的情况:
RewriteCond %{HTTP_HOST} ^s\.domain\.com
因为我没有放一个!一开始。如果我把!在(www。)?domain.com之前它与s.domain.com不匹配,因此工作正常......