【发布时间】:2016-03-07 09:27:17
【问题描述】:
我正在尝试在我们的订单页面上强制使用 https,同时对网站上的其他页面使用标准 http。最后进行内部重写,以便所有请求都由 index.php 处理
这是我迄今为止尝试过的,但我的问题是,在最后一个 RewriteRule 到 index.php 之后,所有规则都再次处理,第二个 RewriteUrl 被处理,因为(我猜)内部 url 不再是 /sv /webshop/ 我最终得到类似http://www.yyyyy/?language=sv&_url=/webshop/
我尝试将标志 END 添加到最后一个 RewriteUrl,但随后出现内部服务器错误。
是否可以停止处理或是否有其他解决方案?
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} ^(/sv/webshop/)$
RewriteRule (.*) https://yyyyyy.com/$1 [R=301,L,QSA]
RewriteCond %{SERVER_PORT} 443
RewriteCond %{REQUEST_URI} !^(/sv/webshop/)$
RewriteRule (.*) http://yyyyyy.com/$1 [R=301,L,QSA]
RewriteRule ^(sv|dk|no|en|de)/(.*)$ index.php?language=$1&_url=/$2 [QSA]
【问题讨论】:
-
在最后一条规则上使用 L 标志。
[QSA,L] -
谢谢,但是 L 标志停止处理该请求的重写规则。然后它将对新的重写文件名发出新请求,并再次开始处理重写规则。
-
您的 .htaccess 文件到底在哪里?在根目录或
/sv/webshop/? -
它位于根目录中。文件夹结构 /sv/webshop/ 不存在,因为所有调用都由 index.php 处理,也在根目录中
标签: apache .htaccess mod-rewrite