使用htaccess

时间:2019-03-17 07:28:52

标签: regex wordpress apache .htaccess mod-rewrite

我有点卡在这里。

我正在尝试以这种方式重定向我的subdmain。 anysubdomain.my_domain.com及其URL必须分别重定向到根域及其URL。

例如,如果用户尝试

(1)http://anysubdomain.my_domain.com,它应重定向到 https: //www.my_domain.com

(2)如果用户尝试使用http://anysubdomain.my_domain.com/ anyurl ,则应将其重定向到 https: //www.my_domain.com / anyurl

我能够使用下面的htaccess代码完成(1)。谷歌搜索

   # 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]
    RewriteCond %{HTTP_HOST} !^www.my_domain.com$
    RewriteRule ^(.*)$ https://www.my_domain.com/$1 [QSA,L,R=301]
    </IfModule>

但是我无法完成(2)部分。

(2)如果用户尝试使用http://anysubdomain.my_domain.com/ anyurl ,则应将其重定向到 https: //www.my_domain.com / anyurl

在谷歌搜索时出现了一堆网址和示例,但第二部分却不起作用。

但是我不确定我们可以通过对上述htaccess代码进行修改来做到这一点。

任何帮助将不胜感激。先谢谢了。

请注意 我已经有了通配符cname,这就是为什么(1)可以正常工作。无需担心该cname事情。

这也是 wordpress网站-如果重要的话

2 个答案:

答案 0 :(得分:3)

首先放置这些规则:

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

像这样:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.)?my_domain\.com$
RewriteRule ^(.*)$ https://www.my_domain.com/$1 [QSA,L,R=301]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

注意:清除浏览器缓存测试。

答案 1 :(得分:0)

您可以使用此.htaccess来处理所有子域:

# BEGIN WordPress
<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /

RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} (?:^|\.)(my_domain\.com)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R=301]

RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

</IfModule>

请确保在新浏览器中对其进行测试,以完全清除浏览器缓存。