将二级域重定向到第三级,但仅限于root

时间:2018-03-14 12:23:37

标签: php wordpress .htaccess mod-rewrite

我有什么

感谢this discussion我已在.htaccess中解决了“始终使用https”重定向的问题:

# Redirect to httpS by default
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Redirect to www if third level domain is not set
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

我想要什么

根据当前配置,https://example.com已正确重定向到https://www.example.com

但我需要,如果网址包含wp-admin,则不会将其重定向到www

因此,例如,https://example.com/wp-admin不得重定向。 此外,路径wp-admin的每个子页面都不会被重定向。

https://example.com/wp-admin/login.php必须是可见的,无需重定向到www,但可以从二级域名重定向。

上下文(如果您对我为何需要此配置感到好奇)

我有域example.com

此域名包含一些第三级域名,并在example.com(第二级)拥有Wordpress管理区域:

  • example.com
  • www.example.com
  • help.example.com
  • another.example.com

但是

  • www.example.com是一个在Heroku上运行的Symfony应用程序;
  • example.com是一个在DigitalOcean上运行的Wordpress多站点安装;
  • help.example.comanother.example.com是使用多字符example.com处理的Wordpress网站

出于这些原因,如果路径中没有www,我需要将第二级域重定向到wp-admin。在所有其他情况下,我需要重定向到www

2 个答案:

答案 0 :(得分:1)

您想要重定向" http到https" ? 把它放在htaccess中

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

答案 1 :(得分:0)

好的,就像添加第二个RewriteCond一样简单。

完整的.htaccess就是:

# Aerendir - Force SSL
RewriteCond %{HTTPS} off

# First rewrite to HTTPS:
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Then redirect to www
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteCond %{REQUEST_URI} !wp-admin [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]