Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 将所有URL重定向到HTTPS,但强制将其中一个URL重定向到HTTP(Apache)_Wordpress_Apache_.htaccess_Redirect_Https - Fatal编程技术网

Wordpress 将所有URL重定向到HTTPS,但强制将其中一个URL重定向到HTTP(Apache)

Wordpress 将所有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

我有一个WordPress多站点博客,完全支持HTTPS

现在,我需要强制将单个页面嵌入HTTP,以便只嵌入HTTP
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,请将example.com中的
    某些页面。*
    以外的任何页面重定向到HTTPS版本
  • 如果不是HTTPS,请访问
    某些页面。*
    不要重定向
  • 如果使用HTTPS并访问
    某些页面。*
    ,请重定向到HTTP
  • 发生了什么:

  • 所有页面根据需要转到HTTPS
  • 所有对
    some页面的请求。*
    只重定向到
    index.php
    ,这意味着所有对
    example.com/some页面的请求都会重定向到
    example.com/
    。HTTP和HTTPS请求都会发生这种情况。最后,浏览器将显示
    https://example.com/
    第页
  • 此外:

    • My
      .htaccess
      除了一些Xdebug触发选项外,不包含任何其他内容
    • 我尝试将HTTPS规则移到WordPress规则之下:它们根本不会触发
    • 我只移动了
      some页面。*
      ->根据WordPress规则的HTTP重定向:没有效果,除了HTTPS访问
      some页面。*
      有效(不重定向到索引)
    • 尝试切换HTTP/S规则:无效
    感谢所有指挥员

    编辑:

    我试着验证一些WordPress的东西。出于某种原因,WordPress可能是执行重定向的人。所有访问
    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]