1

我在同一个域上有两个单独的 WordPress 站点,一个以下列方式安装:

http://subdomain1.domain.tld and http://subdomain2.domain.tld.
http://domain.tld redirects to subdomain1.

我需要删除所有 www。到非 www(这现在可以在http://htaccess.madewithlove.be/上进行测试上测试),www.domain.com 现在返回 domain.com 但是当我输入一个子域时,我仍然得到一个 404 页面万维网。

我当前的代码以及@icabod 的建议现在看起来像这样。

# 301 redirect www to non-www url
# including subdomains

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On
   RewriteBase /
   RewriteCond %{HTTP_HOST} ^www\.(.*)
   RewriteRule (.*) http://%1/$1 [R]
</IfModule>

mod_rewrite正在使用其他重定向,我不想使用 PHP 重定向。我无法访问我的注册商的 CName,因此我无法将它们重定向到那里。我.htaccess在根文件夹中放置了一个文件,其中包含以下代码,并尝试将它也放置在子域根文件夹中。

这让我很生气!

谢谢你。

4

1 回答 1

0

不要忘记你可以RewriteCond在规则中使用表达式的一部分,就像你可以匹配RewriteRule表达式的一部分一样:

RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule (.*) http://%1/$1 [R]

%1匹配 中大括号中的部分RewriteCond$1匹配 中的部分RewriteRule。此重写确实假设您仅在标准端口 80 上使用 http,但基本上会www.从请求的 URI 的开头删除任何内容。从那时起,重定向domain.tldsubdomain1.domain.tld应该很简单:

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule (.*) http://subdomain1.example.com/$1 [R]

[R=301]顺便说一句,在重写工作正常之前,您可能不应该使用它,因为这301意味着它是永久重写,但在测试期间它很容易发生变化。

于 2013-06-10T16:24:19.103 回答