【问题标题】:htaccess - Stop processinghtaccess - 停止处理
【发布时间】: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


【解决方案1】:

所以我找到了一种方法,我不确定这是不是最好的解决方案,但它确实有效。请让我知道是否有更好的解决方案。这就是我现在要做的

# Placed before any the of the other rewrite rules
RewriteCond %{QUERY_STRING} ^(.*)language(.*)$
RewriteRule (.*) - [QSA,L]

【讨论】:

    猜你喜欢
    • 2020-10-26
    • 2012-05-13
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    相关资源
    最近更新 更多