Wordpress 将所有URL重定向到HTTPS,但强制将其中一个URL重定向到HTTP(Apache)
我有一个WordPress多站点博客,完全支持HTTPS 现在,我需要强制将单个页面嵌入HTTP,以便只嵌入HTTPWordpress 将所有URL重定向到HTTPS,但强制将其中一个URL重定向到HTTP(Apache),wordpress,apache,.htaccess,redirect,https,Wordpress,Apache,.htaccess,Redirect,Https,我有一个WordPress多站点博客,完全支持HTTPS 现在,我需要强制将单个页面嵌入HTTP,以便只嵌入HTTPiframe(HTTP嵌入在HTTPS页面中不起作用)。使用force,我的意思是在页面加载HTTPS时重定向到HTTP 该站点可以使用HTTPS,但如果试图访问应该重定向到纯HTTP的页面,服务器会将访问者重定向到站点主页 以下是我当前的.htaccess重写规则: RewriteEngine On # Redirect all to HTTPS if not some-pag
iframe
(HTTP嵌入在HTTPS页面中不起作用)。使用force,我的意思是在页面加载HTTPS时重定向到HTTP
该站点可以使用HTTPS,但如果试图访问应该重定向到纯HTTP的页面,服务器会将访问者重定向到站点主页
以下是我当前的.htaccess
重写规则:
RewriteEngine On
# Redirect all to HTTPS if not some-page.
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^example.com # Check host as some subdomains are not used with HTTPS.
RewriteCond %{REQUEST_URI} !^/some-page(/.*)?
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
# Redirect some-page to HTTP if HTTPS.
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example.com
RewriteCond %{REQUEST_URI} ^/some-page(/.*)?
RewriteRule (.*) http://%{HTTP_HOST}/$1 [R=301,L]
# WordPress below here
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
我希望这些规则能做到:
某些页面。*
以外的任何页面重定向到HTTPS版本某些页面。*
不要重定向某些页面。*
,请重定向到HTTPsome页面的请求。*
只重定向到index.php
,这意味着所有对example.com/some页面的请求都会重定向到example.com/
。HTTP和HTTPS请求都会发生这种情况。最后,浏览器将显示https://example.com/
第页
- My
除了一些Xdebug触发选项外,不包含任何其他内容.htaccess
- 我尝试将HTTPS规则移到WordPress规则之下:它们根本不会触发
- 我只移动了
->根据WordPress规则的HTTP重定向:没有效果,除了HTTPS访问some页面。*
有效(不重定向到索引)some页面。*
- 尝试切换HTTP/S规则:无效
some页面的尝试。*
都会导致wp\u重定向
,并触发站点主页和状态301
我在WordPress配置文件中创建了以下if-else
语句,但它没有任何效果(我假设发生了一些HTTP->HTTPS重定向):
根据我在网上阅读的一些指南,我还尝试将我的.htaccess
规则更改为以下内容:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^example.com
RewriteCond %{REQUEST_URI} !^/some-page
RewriteRule !^some-page.* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example.com
RewriteCond %{REQUEST_URI} ^/some-page
RewriteRule ^some-page.* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
但这似乎没有改变什么
编辑2:
不知何故,.htaccess
似乎正在重写某些页面。*
直接到index.php
。在我调试并连接到WordPress“redirect\u canonical()
之后,它没有显示与某个页面相关的内容。*。相反,它只显示它正在重定向https://example.com/index.php
至https://example.com/
。这可能解释了早期的wp\u重定向301
我试着用检查重写,它说重写(应该)按预期进行
编辑3:
做了一些重写调试。这一切都很好,但出于某种原因,某个页面。*
应该重定向到非HTTPS,服务器值%{HTTPS}
在所有重写尝试(即使在加载带有HTTPS的页面时)上都是off
,这基本上使规则无用。如果我删除HTTPS检查,我会得到一个重写循环(在some page.*
URL上从HTTPS到HTTP等等)
与服务器\u端口
重写条件相同。所有请求似乎都是80
何时是检查连接端口/HTTPS的适当时间
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^example.com
RewriteCond %{REQUEST_URI} !^/some-page
RewriteRule !^some-page.* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^example.com
RewriteCond %{REQUEST_URI} ^/some-page
RewriteRule ^some-page.* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]