【发布时间】:2011-09-28 15:19:53
【问题描述】:
我是这个社区的新手,但我发现它有时真的很有用。
我已经搜索了很多答案,但没有找到我需要的任何东西。我试图自己解决它,但我仍然遇到错误,所以我希望找到能告诉我正确方法的人...... :-)
我有一个“经典”ZF 网站,其中有许多控制器/操作 url,它们通过 .htaccess 文件重定向到 index.php。
现在,我需要将几个控制器重定向到 https ssl 连接,不包括两个控制器的某些操作。
我尝试这样做的方式是:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^mydomain\.tld [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{HTTPS} on
RewriteCond $1 ^!((member|shop)/(?!(index|login))(.*))
RewriteRule ^(.*) http://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteCond $1 ^((member|shop)/(?!(index|login))(.*))
RewriteRule ^(.*) https://%{HTTP_HOST}/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|pdf|txt)$ index.php
当我转到 /member 控制器时它似乎工作 但是,当我转到另一个控制器时,例如 /index 或 /about 它不会重定向到 http 连接(端口 80),如果我尝试稍微更改重写条件正则表达式,它有时会执行重定向循环并且浏览器会通知我阻止与该网站的连接。
有没有人可以向我展示在我的重写条件下使用正确的合成器,以允许两个控制器(不包括给定的操作)在 https 连接下并在更改控制器时返回标准 http 连接?
提前致谢。
亚历山德罗
【问题讨论】:
-
就我个人而言,我不会为此碰我的 htaccess。如果方案不是 https,我会在我的 ZF 应用程序中使用重定向。
标签: zend-framework .htaccess ssl url-rewriting ssl-certificate