【问题标题】:.htaccess in Wordpress for https and www to non-www.htaccess 在 Wordpress 中用于 https 和 www 到非 www
【发布时间】:2017-08-30 18:02:29
【问题描述】:

有人知道,为什么我从 www 到非 www 的重定向可能不起作用?

基本信息:Strato Hoster、Worpress 域重定向适用于:bitcoinmesse.com 子域重定向不起作用:shop.bitcoinmesse.com

当前.htaccess:

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


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

通过网络尝试了很多不同的东西。他们中的大多数导致了这个:

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。

其他人刚刚说我有一个无限循环:

还有一些会导致奇怪的错误,例如请求 /shop/ 之类的子文件夹,但无法访问 404 或 https://shop/。

但他们都没有将 www 重定向到非 www。输入带有 www 的地址总是会导致:在 Firefox 中找不到服务器或在 Chrome 中无法访问网站。

有人有什么想法吗?

编辑:同时它似乎有效果,并且 www.shop.bitcoinmesse.com 可以访问并转发到https://shop.bitcoinmesse.com。

很遗憾,无法访问像 www.shop.bitcoinmesse.com/shop/ 这样的子页面。

【问题讨论】:

    标签: wordpress .htaccess ssl mod-rewrite no-www


    【解决方案1】:

    试试

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

    基本上现在反向引用$1 没有指向任何东西。我将(.*) 添加到RewriteRule,以便$1 实际上是对正则表达式中捕获组的引用。您也可以尝试将$1 更改为$0,因为$0 是完全匹配的URL。

    我还更新了 RewriteCond 以确保主机头在www. 之后有一些内容。这是一个小改动,因为服务器不应该监听任何主机头。

    【讨论】:

    • 试过你的答案。结果还是一样:网站无法访问,对于 www.shop.bitcoinmesse.com。我真的觉得它比 htaccess 中的东西更多,因为我尝试了很多解决方案,但它们似乎都没有对 www 部分产生任何影响。会不会是 www 没有以任何方式指向我的带有 htacces 的文件夹?所以也许 Strato 只是将 shop.bitcoinmesse.com 链接到我的子文件夹,而不是 www.shop.bitcoinmesse.com。
    • 今天使用 www 到达该站点。我仍然保留了您的解决方案。我在 Strato 删除了带有 www.shop.bitcoinmesse.com 的子域,它似乎仍然有效。不幸的是,无法访问 www.shop.bitcoinmesse.com/shop/。
    • 如果您将子域删除到www.shop,那么www.shop.bitcoinmesse.com/shop 将不会加载,因为子域不存在。
    • @Timotheus 子域通常没有另一个 www. 子域。如果您刚刚创建了shop. 子域,那么它可能没有www.shop. 的子域设置。除此之外,根据托管设置,每个站点可能有单独的 htaccess 位置(即shop.bitcoinmesse.com 和 www.bitcoinmesse.com)
    • 嗯,但是如果我删除子域 www.shop.bitcoinmesse.com 可以工作,为什么 www.shop.bitcoinmesse.com/shop 不能工作?我认为创建 www.shop.bitcoinmesse.com 将是一个双重定义。所以基本上是 www.www.shop.bitcoinmesse.com。我可以定义子域指向的位置。因此,如果我再次定义 www.shop.bitcoinmesse.com,我可以将其指向同一个 htaccess。
    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 2013-04-22
    • 2018-11-12
    • 1970-01-01
    • 2017-12-28
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多