Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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
.htaccess 在所有页面都强制使用HTTPS的站点中,在单个页面上强制使用HTTP(无SSL)_.htaccess - Fatal编程技术网

.htaccess 在所有页面都强制使用HTTPS的站点中,在单个页面上强制使用HTTP(无SSL)

.htaccess 在所有页面都强制使用HTTPS的站点中,在单个页面上强制使用HTTP(无SSL),.htaccess,.htaccess,我知道有好几个帖子都在问同样的问题。我又问了同样的问题,因为我已经阅读了每一个问题,并尝试了解决方案。也许他们为O.Ps'es代码工作,但不幸的是,他们不为我工作 我真的需要在一个名为play.PHP的PHP页面上禁用HTTPS,以便该页面可以通过直接HTTP访问,或者如果直接通过HTTPS请求,则重定向到HTTP 我需要更改https://example.com/play/blabla至http://example.com/play/blabla,而站点的其余部分则强制使用HTTPS 这是我的

我知道有好几个帖子都在问同样的问题。我又问了同样的问题,因为我已经阅读了每一个问题,并尝试了解决方案。也许他们为O.Ps'es代码工作,但不幸的是,他们不为我工作

真的需要在一个名为
play.PHP
的PHP页面上禁用HTTPS,以便该页面可以通过直接HTTP访问,或者如果直接通过HTTPS请求,则重定向到HTTP

我需要更改
https://example.com/play/blabla
http://example.com/play/blabla
,而站点的其余部分则强制使用HTTPS

这是我的完整.htaccess代码:-

Header set Access-Control-Allow-Origin "*********"

ErrorDocument 404 /pagenotfound.php
ErrorDocument 403 /pagenotfound.php

Options -MultiViews
RewriteEngine on
RewriteBase /

Options +FollowSymLinks

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteRule ^search/(.*)$ viewgames.php?search=$1 [L,QSA,NC]
RewriteRule ^category/(.*)$ viewgames.php?cat=$1 [L,QSA,NC]
RewriteRule ^users/(.*)$ users.php?action=$1 [L,QSA,NC]
RewriteRule ^play/(.*)/$ play.php?gn=$1 [L,QSA,NC]
RewriteRule ^play/(.*)$ play.php?gn=$1 [L,QSA,NC]

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([a-z]+)/?$ $1.php [L,NC]
我有一个名为
play.php
的脚本,它是使用
/play/
的.htaccess重写的,即如果有人请求
example.com/play/foobar
,请求将被发送到
example.com/play.php?gn=foobar

我对.htaccess很陌生。我将非常感谢你的帮助


[编辑]我已更新上述代码以显示我的完整.htaccess。我希望有帮助。顺便说一句,第一行代码上的星号(*)用于隐藏我的实际网址。

您可以使用以下
重写规则禁用
https
到您的
play.php
URI

RewriteEngine on
RewriteCond ℅{REQUEST_URI} play\.php$ [OR]
RewriteCond ℅{REQUEST_URI} /play
RewriteCond ℅{HTTPS} on
RewriteRule ^ http://℅{HTTP_HOST}℅{REQUEST_URI} [L,NE,R]
这将重定向
https://example.com/play.php
转换为其非SSL版本。 由于您的规则已经检查了
http
url,您还可以在规则中添加一个条件,从HTTPS重定向中排除
play.php
,如下所示:

 RewriteCond %{HTTPS} off
 #redirect all to https except /play and /play.php 
 RewriteCond %{REQUEST_URI} !play
 RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

以下是完整的.htaccess,并附有我的评论:

Header set Access-Control-Allow-Origin "*********"

ErrorDocument 404 /pagenotfound.php
ErrorDocument 403 /pagenotfound.php

Options +FollowSymLinks -MultiViews
RewriteEngine on
RewriteBase /

# it is important to keep www removal rule as first rule to avoid multiple redirects
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]

# http->https if URL is not starting with /play/ or /play.php
RewriteCond %{HTTPS} !on
RewriteRule !^play(?:\.php|/.*)?$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE,NC]

# https->http if URL is starting with /play/
RewriteCond %{HTTPS} on
RewriteRule ^play(?:/.*)?$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE,NC]

RewriteRule ^search/(.*)$ viewgames.php?search=$1 [L,QSA,NC]

RewriteRule ^category/(.*)$ viewgames.php?cat=$1 [L,QSA,NC]

RewriteRule ^users/(.*)$ users.php?action=$1 [L,QSA,NC]

RewriteRule ^play/(.+?)/?$ play.php?gn=$1 [L,QSA,NC]

# make sure to check for presence of .php file before rewrite
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([a-z]+)/?$ $1.php [L,NC]

完全清除浏览器缓存或使用新浏览器测试更改非常重要。

为了正确理解问题,您为什么需要它?我的网站在iframe下加载了多个游戏。某些游戏无法在HTTPS上运行,并导致内容混合问题。为了防止这些问题,我想在特定页面上禁用HTTPS。你没有注意到一些流行的游戏网站没有启用HTTPS吗?“你没有注意到一些流行的游戏网站没有启用HTTPS吗?”-我没有访问游戏网站,所以。。。不。@MagnusEriksson这个游戏不支持HTTPS,所以他们禁用了它。同样,支持HTTPS,因此他们没有从此游戏页面删除HTTPS。您应该使用TLS代理,或者告诉游戏提供商有关letsencrypt的信息。免费证书。当我调用时,您的代码确实有效,但在干净的URL上不起作用。正如我在最初的帖子中提到的,我真的需要干净的代码URL@SayanjyotiDas我已经更新了规则。现在,它应该同时处理URI
play
play.php
。请在测试此更新的代码之前清除浏览器缓存。非常感谢。你的代码工作起来很有魅力。但我遇到了一个简单的问题:当我访问时,它会重定向到。有没有办法重定向到干净的URL?还是永远都是这样?正是我的意思:-)。HTTP和HTTPS可以更改,但我确实需要保持干净的URL。在我上载新代码后,HTTP更改不再发生,即更改为,但不会更改为。我再次编辑了问题,以准确显示我需要网站URL的行为。请帮忙。非常感谢你!!在连续搜索了一周后,我无法解决这个问题,而你帮了我。我将赏金奖励给你:-)