【发布时间】:2017-06-08 19:47:33
【问题描述】:
可能我正在监督一些非常基本的事情,htaccess 不是我的专业领域。
我的网站是 https-only,为了实现这一点,根文件夹 / 包含以下几行:
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [R=301,L]
这很好用。现在我们有一个名为 /projects 的新文件夹,其中包含自己的 htaccess 规则,用于通过名为 /projects/project.html 的文件翻译数据库查询中的 url
文件夹 /projects 中的工作 htaccess 是:
RewriteEngine On
RewriteBase /projects/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ project.html?project=$1 [QSA,L]
现在我想在这个上强制 https 连接,因为如果您直接通过http://URL 访问,主目录中的 https 规则不适用于 /projects。因此我将文件修改为:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://example.com%{REQUEST_URI} [R=301,L,NE]
RewriteBase /projects/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ project.html?project=$1 [QSA,L]
这样,它切换到 https,但我不断收到“ERR_TOO_MANY_REDIRECTS”。
当我按照@thickguru 的建议更改行时,如下所示:
RewriteRule ^(.*)$ https://example.com/$1 [R,L]
它会立即将我重定向到https://example.com/index.html。
我摆弄了设置,还有this post的信息,但我仍然无法让它工作。
【问题讨论】:
-
你用的是什么版本的apache?
-
我不确定我是否给出了正确的答案,但 phpinfo 提到了 Apache2,API 版本 20051115。如果我需要查看其他地方,请告诉我 :)
标签: apache .htaccess mod-rewrite https