2

因此,我获得了 ZF MVC 站点,并希望在 /checkout/ 下的所有内容上强制 SSL 连接,我尝试为此使用 mod_rewrite,所以我的 .htaccess 看起来像这样:

RewriteEngine on
RewriteRule (\/checkout.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R] 
RewriteRule !\.(js|ico|gif|jpg|png|css|swf|xml|avi|flv|mov|mp3|wav)$ index.php [L]

果然,它确实启动了 SSL,但第二条规则是 ZF 特定的,并将所有内容重定向到 index.php 排序擦除协议规范。

不幸的是,我对 mod_rewrite 的熟练程度非常糟糕。也许有人可以帮我解决这个问题?

4

2 回答 2

3

蒂姆莱特尔的答案大多在那里。

我会在检查 HTTPS 时将其更改为更严格一些,并且标志需要一个分隔符。

RewriteCond %{HTTPS} !^on$
RewriteRule ^/checkout/? https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 

RewriteRule !\.(js|ico|gif|jpg|png|css|swf|xml|avi|flv|mov|mp3|wav)$ index.php [L]
于 2009-01-03T05:02:31.267 回答
1

这可能会对您有所帮助,添加 RewriteCond 以仅在连接不是 SSL 时应用,然后将“L”选项添加到您的重定向规则中,以便重写处理在该点停止(因此最后一条规则不会覆盖 SSL 重定向)。

RewriteCond %{HTTPS} !on
RewriteRule (\/checkout.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [RL] 

RewriteRule !\.(js|ico|gif|jpg|png|css|swf|xml|avi|flv|mov|mp3|wav)$ index.php [L]
于 2008-12-19T17:31:19.590 回答