【问题标题】:How to rewrite ssl and friendly URL using .htaccess如何使用 .htaccess 重写 ssl 和友好的 URL
【发布时间】:2014-02-22 16:51:31
【问题描述】:

我在进行 .htaccess 重写时遇到问题。

RewriteEngine On
RewriteRule ^([a-zA-Z0-9\-\,]+)$ index.php?s=$1
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

当我使用http://ssl.droth-admin.ogicom.pl/kalkulator 访问站点时,它会重定向到https://ssl.droth-admin.ogicom.pl/kalkulator?s=kalkulator。当我直接使用 https 访问网站时,一切正常,没有显示 ?s=kalkulator。

测试php:

<?php
//if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) AND $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
if (!empty($_SERVER['HTTPS']))
{
    echo ("SSL active");
    echo ("<br />");
    echo ("s=".$_GET['s']);
}
else
{
    echo ("SSL not active");
    echo ("<br />");
    echo ("s=".$_GET['s']);
}
?>

是否有任何解决方案可以使 ?s=kalkulator 在 ssl 重定向后不显示?我尝试切换重定向,但没有成功。

【问题讨论】:

  • 链接的问题并不是我所需要的。在重定向 ?s=kalkulator 之后,我不想要它。
  • 好吧,你是对的。我阅读了重定向和查询字符串并搜索了 QSA,但这不是你的问题。也许您也需要RewriteCond %{HTTPS} off 作为第一条规则?第一条规则强制s 出现

标签: .htaccess url ssl rewrite friendly-url


【解决方案1】:

更改规则的顺序:

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^([a-zA-Z0-9,-]+)/?$ index.php?s=$1 [L,QSA]

【讨论】:

    猜你喜欢
    • 2013-05-24
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2018-09-10
    • 2017-08-24
    • 1970-01-01
    • 2015-07-24
    相关资源
    最近更新 更多