3个规则不能一起工作(htaccess)

时间:2017-07-21 14:08:01

标签: .htaccess

我尝试了一些不同的东西,但却无法实现这一点。

我的代码应该做什么:

  1. 删除www
  2. 使用https
  3. 如果网址不存在,请转到index.php
  4. 1& 2为我工作 3对我有用 但是当我添加1,2& 3我在一起得到一个错误。

    我的代码是:

        RewriteEngine on
    
        RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
        RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
    
        RewriteCond %{HTTPS} !on
        RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d
        RewriteRule ^.*$ /index.php [L]
    

    谢谢:)

1 个答案:

答案 0 :(得分:0)

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule .* https://%1/$0 [R=301,END]

RewriteCond %{HTTPS} =off
RewriteRule .* https://%{HTTP_HOST}/$0 [R=301,END]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ index.php [NS,END]

使用基础是一个好主意。 PCRE不需要额外的组。仅重定向非空网址,因为您index.php中可能已{。}}。