.htaccess - 使用 YII 清除 .htaccess 中的 url 和 https 重定向冲突

标签 .htaccess apache2 yii

我的 .htaccess 中有以下内容 - clean url 的声明和 https 重定向单独工作都正常,但放在一起会导致连续的重定向错误(此服务器正在以永远不会完成的方式进行重定向)。

这是我的 .htacess:

RewriteEngine on
# if a directory or a file exists, use it directly 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward it to index.php
RewriteRule . index.php
# force to use https
#RewriteCond %{HTTPS} !=on 
#RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

知道如何解决这个问题吗?

谢谢

最佳答案

希望我没有迟到,因为我偶然发现了你同样的问题,并在一天前解决了冲突。

.htaccess 文件中写入以下内容:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

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

第一条规则将自动将任何 HTTP 请求重定向到 HTTPS,并(通过关键的 [L] 标记)停止其他会弄乱页面的替换(具体来说,图像和 CSS 样式表不会被服务)。

第二个是 Yii 建议的方法来检查特定 URL 是否对应于真实的文件或目录,如果不对应,则将请求转发到 index.php ( Web应用程序)。 (那么,应用程序配置文件中的规则应该完成剩下的工作)。

关于.htaccess - 使用 YII 清除 .htaccess 中的 url 和 https 重定向冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10448693/

相关文章:

apache - 从tomcat中找出自己的公共(public)地址

php - 从同一 Controller 的一个 Action 调用另一个 Action

php - 我想从客户表中获取名字

php - 如何在没有 SSH 的情况下在 GoDaddy 共享主机中托管 Laravel 5.2?

apache - 将子域重定向到文件而不硬编码 url

php - 如何阻止访问根文件夹中除 index.php 之外的所有 .php(通过 .htaccess)?

php - Wordpress(在 Rackspace 服务器上)强制整个网站通过 SSL,除了一页

php - 在 Ubuntu 上的 PHP+Apache2 中启用线程安全 - 使用 pthreads 从源代码编译 php

c++ - 为什么 LD_PRELOAD 不适用于加载的共享库之一?

php - Yii - 从另一个 Action 方法调用一个 Action 方法