如何为子域添加自定义重定向规则?

时间:2017-02-26 作者:hitautodestruct

我正在尝试编写一个自定义重定向规则,将子域名重定向到匹配的页面。

示例:wppage.example.comexample.com/wppage

我在我的functions.php:

function custom_rewrite_basic() {
    $rewrite = add_rewrite_rule(\'([^/]+)/?$\', \'index.php?pagename=$matches[1]\', \'top\');
}

add_action(\'init\', \'custom_rewrite_basic\');
我还为DNS中的所有子域添加了通配符转发,并验证了.htaccessdefault WordPress mod_rewrite rules.

不知道为什么,但我一直被重定向到我的主页。

我做错了什么?

1 个回复
最合适的回答,由SO网友:Fayaz 整理而成

最好不要在WordPress中使用这些子域重定向规则:

当您使用错误的域名或子域访问WordPress时,WordPress可能无法正确加载,因为典型的WordPress安装设置为针对特定域或子域运行。

即使你能做到这一点,在每次重定向之前,WordPress都会先加载自己,然后再进行重定向,再在重定向URL到达服务器时再次加载。这是一个缓慢的过程。

改为在.htaccess. 如下所示:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# custom rules for subdomain matching
RewriteCond %{HTTP_HOST} ^([^.]+)\\.example\\.com$ [NC]
RewriteRule . http://example.com/%1 [R=301,L]

# default WordPress rules
RewriteRule ^index\\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
这将重定向所有sub.example.comexample.com/sub.

Note: 上述代码也将重定向www.example.comexample.com/www. 如果您不希望这样,请修改以上内容# custom rules for subdomain matching 以下章节:

# to redirect www.example.com/* to example.com/*
RewriteCond %{HTTP_HOST} ^www\\.example\\.com$ [NC]
RewriteRule ^(.*)$ "http://example.com/$1" [R=301,L]
# custom rules for subdomain matching
RewriteCond %{HTTP_HOST} ^([^.]+)\\.example\\.com$ [NC]
RewriteRule . http://example.com/%1 [R=301,L]
阅读this doc. 了解有关apache的更多信息mod_rewrite.

另外,确保mod_rewrite is enabled for .htaccess 在服务器中。

相关推荐

Subdomains to pages

嗨,我在wordpress上有一个网站,有2个页面,我想把它转换成子域。让我的网站在http://www.domain.com 有两页http://www.domain.com/page1 和http://www.domain.com/page2我想让他们在http://page1.domain.com &;http://page2.domain.com 分别地此外,我可能有子页面到第1页,我想访问使用主页的子域。我是说如果http://www.domain.com/page1/subpage1 是