Apache 使用mod rewrite取消https特定URL
我有一个apache vhost正在监听端口443 我正在尝试将任何https请求重定向回http,除非它们满足以下条件:Apache 使用mod rewrite取消https特定URL,apache,mod-rewrite,Apache,Mod Rewrite,我有一个apache vhost正在监听端口443 我正在尝试将任何https请求重定向回http,除非它们满足以下条件: 从域www.site.co.uk 并在请求的uri部分包含/alpha或/beta 我在配置中有以下语句以及注释逻辑I,尽管过程如下,但https://www.mysite.co.uk/alpha和https://www.mysite.co.uk/beta正在以某种方式被删除 我是否误解了条件重写的逻辑流程 RewriteEngine On # if host submi
www.site.co.uk
/alpha
或/beta
https://www.mysite.co.uk/alpha
和https://www.mysite.co.uk/beta
正在以某种方式被删除
我是否误解了条件重写的逻辑流程
RewriteEngine On
# if host submitted is not 'www.mysite.co.uk' un-https the url (i.e. catchall)
RewriteCond %{HTTP_HOST} !^www\.mysite\.co\.uk [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [NC,L,R=301]
# otherwise IF THE domain is 'www.mysite.co.uk
# *and* if the uri does not contain 'alpha' *or* 'beta' un-https the url
RewriteCond %{HTTP_HOST} ^www\.mysite\.co\.uk [NC]
RewriteCond %{REQUEST_URI} !^\/alpha/? [NC,OR]
RewriteCond %{REQUEST_URI} !^\/beta/? [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1 [NC,L,R=301]
# otherwise the domain must be www.mysite.co.uk
# and the uri must contain '/alpha' *or* '/beta'
# in which case do nothing
您拥有的规则是URI的逻辑或不包含
/alpha
或/beta
。你需要把所有的条件结合起来。只需删除[或]
标志:
RewriteCond %{REQUEST_URI} !^\/alpha/? [NC]
RewriteCond %{REQUEST_URI} !^\/beta/? [NC]
这是逻辑上的否定展开。假设A是/alpha
,B是/beta
!因此,A不是/alpha
。所以当你说!(A或B),如果展开代码>,你得到了!A和!B