1

我正在使用 Yii 框架。我想将网站上的所有页面从 HTTP 重定向到 HTTPS,除了这个domain.com/clip/create

以下代码将所有页面重定向到 HTTPS:

RewriteEngine on
RewriteCond %{HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

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

我修改了该代码以为一页添加异常,但它无法正常工作。它适用于网站上的所有页面,但在地址domain.com/clip/create上它重定向到https://domain.com/index.php 我的代码如下:

RewriteEngine on

RewriteCond %{HTTPS} !^on$
RewriteCond %{REQUEST_URI} !^/clip/create
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

RewriteCond %{HTTPS} ^on$
RewriteCond %{REQUEST_URI} ^/clip/create
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R,L]    

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

任何帮助深表感谢。

谢谢

4

4 回答 4

1

您想删除第二个重定向的“https”部分,(您可能也不需要!-fand!-d检查):

RewriteCond %{HTTPS} ^on$
RewriteCond %{REQUEST_URI} ^/clip/create
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R,L]    
# no "s" here ---------^

这可能是因为你的 Yii 控制器。将请求路由到控制器,您需要防止再次重定向。index.php将此添加到最顶部(在重定向之前):

RewriteRule index\.php - [L]
于 2013-09-27T21:50:54.080 回答
0

我对 htaccess 很糟糕

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/clip/create [OR]
RewriteRule ^/directory(.*)$ https://%{HTTP_HOST}/directory$1 [L,R]

这里得到规则

于 2013-09-27T23:22:51.553 回答
0

清除浏览器缓存!当我在 HTTP 和 HTTPS 之间切换连接类型时,我遇到了许多这些问题,然后经过大量搜索和尝试,我发现 Firefox 和 chrome 缓存了 301 和 302 错误代码。

于 2013-09-28T06:43:56.487 回答
0

这将为您工作:

RewriteEngine on

RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_URI} !/clip/create
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
于 2014-12-29T19:47:44.040 回答