zend-framework - htaccess https 仅在特定的 Zend Frameworks Controller /操作上重定向

标签 zend-framework .htaccess ssl url-rewriting ssl-certificate

我是这个社区的新手,但我发现它有时真的很有用。

我搜索了很多答案,但没有找到我需要的任何东西。我已经尝试自己解决它,但我仍然遇到错误,所以我希望找到可以向我展示正确方法的人...:-)

我有一个“经典的”ZF 网站,其中有许多 Controller /操作 url,这些 url 使用 .htaccess 文件重定向到 index.php。

现在,我需要的是将几个 Controller 重定向到 https ssl 连接,排除两个 Controller 的某些操作。

我尝试这样做的方式是:


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 controller 时它似乎工作 但是,当我转到另一个 Controller 时,例如/index 或/about 它不会重定向到 http 连接(端口 80),如果我尝试稍微更改重写条件正则表达式,它有时会执行重定向循环和浏览器给我一条通知,阻止与该站点的连接。

有没有人可以向我展示在我的重写条件下使用的正确语法,以允许两个 Controller (不包括给定的操作)在 https 连接下并在更改 Controller 时返回到标准 http 连接?

提前致谢。

亚历山德罗

最佳答案

试试这些规则(替换适当的行):

RewriteCond %{HTTPS} on [NC]
RewriteCond %{REQUEST_URI} !^/(member|shop)/ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

RewriteCond %{HTTPS} off [NC]
RewriteCond %{REQUEST_URI} ^/(member|shop)/ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
  1. 这些规则有点简单(HTTPS 将应用于 /member//shop/ Controller 中的所有 URL(例如 /member/login, /member/dashboard, /member/orders/15423/invoice 等)
  2. Negate ! 应该在 RewriteCond 指令中 before ^ -- 如果你想要自己的规则,那么替换 RewriteCond $1 ^! ((member|shop)/(?!(index|login))(.*)) 通过 RewriteCond $1 !^((member|shop)/(?!(index|login))( .*))

关于zend-framework - htaccess https 仅在特定的 Zend Frameworks Controller /操作上重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580154/

相关文章:

php - 如何在 json 中传递变量数组并检索它

php - .htaccess 重写友好的 URL

apache - .htaccess : understanding use of deny, 允许和允许、拒绝

php - 将所有子文件夹重定向到根目录中的文件

php - 如何在 Zend 中开始使用 AJAX/JSON?

Windows 和 IIS 上的 PHP 5 和 Zend MVC

php - application.ini 中的 Zend_Log

java - SSL:如何使用连接到同一端口的单独 key 处理多个客户端?

ssl - URL Rewrite Force to https 除了一个域

python - 如何让 googlemaps python 库检测 SSL 证书?