如果两个条件都存在,则www / https的htaccess RewriteRule不起作用

时间:2016-11-08 11:57:19

标签: .htaccess redirect mod-rewrite

我遇到了.htaccess重写规则的问题,并想知道是否有人可以提供帮助。

我有一个重定向任何非www的设置。网址到www。但是我还需要引入https重定向。在找了一段时间之后我找到了下面的第一个例子,但它在所有浏览器中都会导致重定向循环错误。

第二个示例适用于所有场景,除了访问www.example.com并且不指向https。有没有人知道解决这个问题的方法呢?

# Redirect Loop
RewriteCond %{SERVER_PORT} !=443 [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.website.com/$1 [R,L] 

# Works (without ssl redirect)
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.website.com/$1 [R,L] 

我已尝试以下条件导致同样的错误

RewriteCond %{HTTPS} off
RewriteCond %{SERVER_PORT} 80 

完整htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    Options +FollowSymlinks
    RewriteBase /

    RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
    RewriteCond %{HTTPS} off
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://www.%1%{REQUEST_URI} [R,L,NE]

    # Removes index.php from URLS
    RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
    RewriteCond %{REQUEST_URI} !/system/.* [NC]
    RewriteRule (.*?)index\.php/*(.*) /$1$2 [R=301,NE,L]

    # Directs all traffice through the site index
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>

1 个答案:

答案 0 :(得分:0)

您可以使用单一规则添加 { "_index": "test_index", "_type": "object", "_id": "1", "_score": 1, "_source": { "attributes": [ { "converted": null }, { "converted": 1234.567 }, { "converted": null } ] } } www

https

确保使用此规则替换两个规则并清除浏览器缓存。