【问题标题】:How To Redirect www to Non-www with path url complete in apache2如何在apache2中使用完整的路径url将www重定向到非www
【发布时间】:2022-01-22 06:40:27
【问题描述】:

所有带有 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/$1 [R=301,L]

</IfModule>

【问题讨论】:

  • 您发布的规则已经这样做了。您可能与其他指令有冲突。请更新您的问题以包含完整的.htaccess 文件。

标签: .htaccess apache2 hosting


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

你把这条规则放在了错误的地方。它需要在一开始,紧跟在RewriteEngine 指令之后。放在最后,改写为index.php后,任何对www子域的请求都会重定向到index.php(在第二轮处理中)。

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

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

【讨论】:

    猜你喜欢
    • 2017-06-20
    • 2021-09-13
    • 1970-01-01
    • 2011-06-24
    • 2019-03-09
    • 2011-11-05
    • 2013-12-20
    • 2010-11-12
    相关资源
    最近更新 更多