重定向到https时,为什么干净的URL不起作用?

时间:2015-06-11 13:16:14

标签: .htaccess mod-rewrite https drupal-6 clean-urls

我在htacess文件中添加了一些行,将所有http请求重定向到https。现在,当我输入类似:http://example.com/frames/view/4701362的网址时,它会重定向到:https://example.com/index.php?q=frames/view/4701362。我可以手动转到该页面:https://example.com/frames/view/4701362并且URL不会更改。

我设置了干净的网址

Clean URLs configuration

Htaccess文件

<IfModule mod_rewrite.c>
  RewriteEngine on

  #some more stuff here, unrelated 

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</IfModule>

编辑: 我试过反转Drupal index.php?q = line和这样的https行...

  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

但是我的网站没有正确加载,并且甚至在主页上也没有找到Page。

1 个答案:

答案 0 :(得分:1)

感谢上面的@MikeRockett,我能够解决这个问题。除了他的建议,我还必须将[L,R=301]添加到RewriteRule行。

<IfModule mod_rewrite.c>
  RewriteEngine on

  #some more stuff here, unrelated 

  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]  

  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

</IfModule>