gpt4 book ai didi

.htaccess 重定向到 https,除了一页

转载 作者:行者123 更新时间:2023-12-04 14:31:27 25 4
gpt4 key购买 nike

我想用我的 .htaccess 完成以下事情:

  • 非 www 转 www
  • http 到 https 除了页面 /my/smaple/page
  • 如果文件名不是文件或目录,则执行 index.php

  • 这是它目前的样子:
    RewriteEngine on
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/my/sample/page
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]

    如果我尝试访问 http://www.mydomain.tld/my/smaple/page , 我被重定向到 https://www.mydomain.tld/index.php .不过其他一切都有效。我的 .htaccess 知识非常少,所以请解释一下出了什么问题。

    最佳答案

    问题是/my/sample/page被最后一条规则困住,然后重写引擎循环。这是正在发生的事情:

  • 请求发送至 http://www.example.com/my/sample/page
  • 跳过第一条规则,%{HTTP_HOST}以“www”开头。
  • 跳过第二条规则,%{REQUEST_URI}/my/sample/page 开头
  • 应用第三条规则,请求不是针对现有文件名或目录。请求 URI 现在是 /index.php .
  • 重写引擎循环
  • 跳过第一条规则,%{HTTP_HOST}仍然以“www”开头。
  • 第二条规则 已申请 , %{REQUEST_URI}现在是“/index.php”,不是 /my/sample/page , 请求被标记为重定向到 https://www.exmaple.com/index.php .
  • 重写引擎循环
  • 请求被标记为重定向,因此通过处理管道发送。

  • 尝试更改第二条规则:
    RewriteCond %{HTTPS} off
    RewriteCond %{REQUEST_URI} !^/my/sample/page
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]


    RewriteCond %{HTTPS} off
    RewriteCond %{THE_REQUEST} !/my/sample/page
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    这样,当重写引擎循环时, %{THE_REQUEST}变量仍然是 GET /my/sample/page因此条件仍然失败。

    关于.htaccess 重定向到 https,除了一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33089109/

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