htaccess从http重定向到https + GET参数

时间:2016-05-18 12:56:24

标签: .htaccess redirect mod-rewrite https

我正在尝试编辑我的.httaccess配置。我想将everythink重定向到https,但如果我试试这个,我在stackoverflow上找到了什么:

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

它不会重定向。

现在我的.htaccess看起来像:

RewriteEngine On

# ignore all existing files and directories for rewriting     
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([\d+^/]*)$ /index.php?id=$1 [QSA,L]
RewriteRule ^([\w+^/]*)$ /index.php?name=$1 [QSA,L]

重写以下规则:

^([\d+^/]*)$ /index.php?id=$1 [QSA,L] 

如果我想要

,效果很好
  • www.mydomain.com/523

就像

  • www.mydomain.com/index.php?id=523

那么如何将我的代码附加到重定向 http://到https://我的旧重写规则仍然有用吗?

2 个答案:

答案 0 :(得分:0)

尝试:

RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI [NE,L,R]
  # ignore all existing files and directories for rewriting     
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([\d+^/]*)$ /index.php?id=$1 [QSA,L]
RewriteRule ^([\w+^/]*)$ /index.php?name=$1 [QSA,L]

答案 1 :(得分:0)

我已经为GET params解决了这个问题:

RewriteEngine On

# ignore all existing files and directories for rewriting     
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([\d+^/]*)$ https://%{HTTP_HOST}/index.php?id=$1 [QSA,L]
RewriteRule ^([\w+^/]*)$ https://%{HTTP_HOST}/index.php?name=$1 [QSA,L]

但我无法解决主页和所有其他页面问题。我正在使用JS location.replace。如果有人知道如何设置.htaccess来同步这些事情:

  • 将每个文件重定向到https
  • 以及主页上的斜杠后面的所有数字和单词(example.com/63)重定向到https://% {HTTP_HOST} /index.php?id=$1(作为GET参数)