如何使用路径 url 将 www 重定向到非 www 在 apache2 中完成

How To Redirect www to Non-www with path url complete in apache2

所有带有 www (www.example.com/posts/categories) 的路径都重定向到主页。我如何从 .htaccess 重定向并保留完整路径?

https://www.example.com/posts/categories to https://example.com/posts/categories

当前配置:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Send Requests To Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

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

</IfModule>
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/ [R=301,L]

你把这条规则放在了错误的地方。它需要从头开始,紧跟在 RewriteEngine 指令之后。通过将其放在末尾,在重写为 index.php 之后,任何对 www 子域的请求将被重定向到 index.php(在第二轮处理期间)。

作为一般规则,外部重定向应始终在内部重写之前进行。

您还应该考虑实施 HTTP 到 HTTPS 重定向。