“ www到非www”的mod_rewrite规则不会重定向子页面

时间:2018-07-06 15:35:20

标签: apache .htaccess mod-rewrite

在这里问这个问题之前,我已经进行了彻底的搜索。请听我说:

我正在尝试将博客从www重定向到非www,并且它没有重定向任何子页面。我也有一个http> https重定向,它对于域和子页面都非常适用。这是我的.htaccess文件中的规则

    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteRule ^^rcp-pep-ipn //?rcp-pep-listener=IPN [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    RewriteBase /
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\. [NC]
    RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
    </IfModule>
    # END WordPress

如果我在这里做错了什么,我将不胜感激。从字面上看,我已经为所有其他站点使用了完全相同的代码(来自第二个RewriteBase /),并且可以正常工作。

1 个答案:

答案 0 :(得分:0)

您应该将那些协议检查条件放在首位。您在规则内也有一些问题。试试:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off [OR]
  RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
  RewriteRule ^(.*)$ https://%1/$1 [R=301,NE,L]
  RewriteRule ^rcp-pep-ipn /?rcp-pep-listener=IPN [QSA,L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>