Mod Rewrite - 强制HTTPS和重写变量?

时间:2017-07-04 16:18:19

标签: regex apache mod-rewrite heroku

我在Heroku上运行并添加了重写规则来清理URL并强制使用https。当网址从http重写为https时,我遇到了一个小问题,并且不了解重写规则,但还没弄清楚我做错了什么。

Heroku上的当前.htaccess

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ ?id=$1 [QSA]
    ##Force SSL 
    RewriteCond %{HTTP:X-Forwarded-Proto} !https

当我访问https://example.com/12345时,一切都很有效。 当我访问http://example.com/12345时,网址会被重写为https://example.com/12345?id=12345

我希望http重写为https://example.com/12345

我错过了什么?提前谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你不需要第2行和第3行。所以你的conf将是:

RewriteEngine On
##Force SSL 
RewriteCond %{HTTP:X-Forwarded-Proto} !https

我在最后RewriteRule之后看不到任何RewriteCond。 您是否忘记在问题或conf中添加以下内容?

RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=301]