结合htaccess重定向和重写(非www到www,http到https,带关键字的目录到root)

时间:2014-11-22 01:18:31

标签: .htaccess redirect

我(有时)以某种方式成功管理.htaccess文件,但需要帮助。

我想同时达到以下目的

  1. 将任何非www重定向到www
  2. 将/ site或/ site /重定向到root
  3. 将任何http重定向到https
  4. 最后,每个链接,无论它是如何起源的,都应以https://www.domain.com/开头,以/ original_request_directory_or_file_if_any结束

    我可以获得#1,没问题

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^domain.com$
    RewriteRule ^/?$ "http\:\/\/www\.domain\.com\/" [R=301,L]
    

    我可以得到#2没问题,它与#1

    一起工作
    RedirectMatch 301 ^/site/$ http://www.domain.com/
    

    到目前为止我无法实现的是#3

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

    当我启用上面的代码时,我发现重定向循环错误的浏览器错误。

    期待一个解决方案(因为我确信这是可能的,我只是不知道如何。)

    提前谢谢大家!

1 个答案:

答案 0 :(得分:1)

如果您将所有内容重定向到https,请避免在重新定向到http。

之前
RewriteEngine on
RewriteRule ^site/? https://www.domain.com/ [R=302,L]

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=302,L]

当一切正常时,将[R = 302,L]更改为[R = 301,L]