gpt4 book ai didi

apache - 对某些 URL 强制使用 HTTPS,对所有其他 URL 强制使用 HTTP

转载 作者:可可西里 更新时间:2023-11-01 15:06:25 24 4
gpt4 key购买 nike

我有一个客户端项目,我需要为某个文件夹强制使用 HTTPS,并为所有其他文件夹强制使用 HTTP。我可以成功地为我想要的文件夹强制执行 HTTPS,但随后返回到站点其余部分的所有链接最终都通过 HTTPS。我想要一个规则,强制将对安全文件夹中“不”的任何内容的请求强制返回到 HTTP。这是我到目前为止所拥有的:

RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]

RewriteCond %{HTTPS} !=on
RewriteRule ^(my) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1

“我的”是我需要强制使用 HTTPS 的文件夹的名称。

有什么想法吗?

更新:我也试过:

RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]

# Force HTTPS for /my
RewriteCond %{HTTPS} !=on
RewriteRule ^(my) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

# Force HTTP for anything which isn't /my
RewriteCond %{HTTPS} =on
RewriteRule !^my http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

# Remove index.php from URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1

但是他们现在不再通过 HTTPS 强制请求/my 而是解析为 http://www.example.com/index.php/my

:?

最佳答案

啊,当然。问题在于您的重写规则集在初始重定向后转换为 index.php 后将被重新处理。使用您当前拥有的内容,您需要额外调整重定向以确保在重写为 /index.php/my 后它们不会被应用。

像下面这样的事情应该做:

RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]

# Force HTTPS for /my
RewriteCond %{HTTPS} !=on
RewriteCond %{THE_REQUEST} ^[A-Z]+\s/my [NC]
RewriteRule ^(my) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

# Force HTTP for anything which isn't /my
RewriteCond %{HTTPS} =on
RewriteCond %{THE_REQUEST} !^[A-Z]+\s/my [NC]
RewriteRule !^my http://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

# Remove index.php from URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1

关于apache - 对某些 URL 强制使用 HTTPS,对所有其他 URL 强制使用 HTTP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com