提前感谢您的帮助。我已经为我们的 Web 应用程序设置了 Zend Framework,并且到目前为止使用基本的 SSL 重定向工作得很好。我们希望将所有 URL 重定向到 SSL,除了几个路径。一个路径工作正常,只是加载图像文件。但另一条路径没有,它是一个 Zend 框架控制器,其动作需要请求参数。
这是我们当前的工作配置:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !(/images)
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
以上适用于排除图像并允许 ZF 运行,但我们还想排除 URI 路径 /wsrv/itemdata 中的任何内容,我们尝试使用此条件:
RewriteCond %{REQUEST_URI} !(/wsrv/itemdata)
/wsrv/itemdata 可能包含以下格式的多个参数:
/wsrv/itemdata/item_nbr/111111/some_other_arg/a-value
我们的问题是它总是重定向到 /index.php,它被定向到 SSL。我们需要重定向到 index.php 以使框架正常工作,但不能仅对单个控制器和操作 /wsrv/itemdata 使用 ssl。
我很感激任何帮助。谢谢!
编辑 6-4-12:(已解决!主要是) 它不是 URL 重写,它在我的 Zend Framework 加载器中。我添加了下面的规则并使用了一些测试文件,规则有效。但是我的框架设置中的某些东西正在重定向它。
RewriteCond %{HTTPS} !=on
RewriteCond %{REQUEST_URI} !(/images/)
RewriteCond %{REQUEST_URI} !(/wsrv/itemdata/)
RewriteCond %{REQUEST_URI} !(/test/make/)
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
上述工作,除了 /wsrv/itemdata 行,它正在通过框架。