gpt4 book ai didi

regex - RewriteCond REQUEST_URI - ^ 没有按预期工作

转载 作者:行者123 更新时间:2023-12-01 07:11:09 26 4
gpt4 key购买 nike

我正在 codeigniter 中建立一个网站。我在 .htaccess 文件中有一系列重写条件和规则。第一组规则根据 uri 的第一段打开或关闭 SSL。

然后它再次循环,如果找到匹配项,则适本地重定向页面。如果没有匹配项,并且 uri 不以列出的任何字符串开头,它会将您重定向到另一个页面。如果不满足任何条件,则转到索引页。

问题在于我的第一组打开和关闭 SSL 的规则。我想指定 uri 必须以 admin 或 secure 开始。但是如果我将 ^ 添加到字符串的开头,一切都会中断。这是我所拥有的:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/?(admin|secure)
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/?(admin|secure)
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

...specific rewrites here
RewriteRule ^secure-form1$ secure/contract/secure-form1 [L]
RewriteRule ^secure$ secure/article/secure [L]

RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteCond %{REQUEST_URI} !^/(admin|form|secure|page)/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/page/article/$1 [L]

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

如果我在前 2 个重写条件(https 开启和关闭)中保留 ^ 符号,那么
http://www.example.com/secure
改写为
https://www.example.com/index.php/secure/article/secure
这是最后的重写规则。网址实际上在浏览器中更改为此。

如果我从前 2 个重写条件中取出 ^ 符号,则它会转到正确的页面。但我确实需要指定 uri 的开头,因为还有其他页面在 uri 中间(并在斜杠后面)具有“安全”,不应该使用 SSL。

我无法弄清楚这一点。

最佳答案

试试这个:

RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} ^(.*)$
RewriteRule ^/?(admin|secure)$ https://%1/$1 [R=301,L]

关于regex - RewriteCond REQUEST_URI - ^ 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12465842/

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