gpt4 book ai didi

特定文件夹和路径的 Apache mod_rewrite

转载 作者:行者123 更新时间:2023-12-01 13:33:59 25 4
gpt4 key购买 nike

我在网上找到了很多关于如何设置 mod_rewrites 的文章,但是看在上帝的份上,我不知道如何正确地在所有页面上强制使用 HTTPS,然后在某些目录或(已经重写的)页面上强制使用 HTTP。

现在这个变得非常棘手,因为我需要在这个目录上使用 HTTPS,除了两种情况,例如“/surf”实际上是从“surf.php”重写的,和“promote-([0-9a-zA -Z-]+)$"由 "promote.php?user=$1"重写:

<Directory /home/rotate/public_html/ptp/>
AllowOverride None
Order Deny,Allow
Allow from all

Options +SymLinksIfOwnerMatch
ErrorDocument 404 "<h1>Oops! Couldn't find that page.</h1>"
RewriteEngine On
RewriteRule ^promote-([0-9]+)$ promote.php?user=$1 [QSA,NC,L]
RewriteRule ^([^.?]+)$ %{REQUEST_URI}.php [L]

</Directory>

我已经尝试了一些东西,但只导致了一些奇怪的重定向循环......

RewriteCond %{HTTPS} on
RewriteRule !^(surf|promote-([0-9]+)$) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

所以基本上我需要在/ptp/中的所有地方强制使用 HTTPS,除了/ptp/surf(它是从 surf.php 和/ptp/promote-123 重写的,它是从 promote.php?user=123 重写的

目前,我根据需要使用 PHP 重定向到 HTTP 或 HTTPS,但我知道如果我能够通过重写来实现,速度会快得多。有任何指示、提示、建议吗?谢谢。

更新 2:这有效:

RewriteCond %{HTTPS} off
RewriteRule !^(surf|promote(-[0-9]+)?) https://%{HTTP_HOST}%{REQUEST_URI} [R=301]

RewriteRule ^promote-([0-9]+)$ promote.php?user=$1 [NC,L]
RewriteRule ^([^.?]+)$ %{REQUEST_URI}.php

但是,除非我指定绝对 HTTPS 路径,否则浏览器会阻止诸如 javascript、字体等资源。请注意,这在通过 PHP 重定向时从未发生过...

最佳答案

我做了一点改动,效果很好

变化

删除 Change the RewriteRule to match file to .php to bottom.

删除模式结尾的$符号

如更新中所述,promote-1111 将重定向到 promote.php?user=$1 更改 promote-[0-9]+promote(-[0-9]+)? 否则它将在第二次重定向中覆盖,因为您将它重定向到 promote.php?user=$1

代码

RewriteCond %{HTTPS} off
RewriteRule !^(surf|promote(-[0-9]+)?) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^([^.?]+)$ %{REQUEST_URI}.php [L]

页面浏览

enter image description here

页面索引

不要介意此图像中显示的错误消息。因为我是从我的本地主机上尝试的,所以它没有证书。

将与服务器一起工作

enter image description here

关于特定文件夹和路径的 Apache mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44559689/

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