【问题标题】:How to rewrite number of specific url to subdomain via htaccess如何通过 htaccess 将特定 url 的数量重写到子域
【发布时间】:2021-12-05 05:51:36
【问题描述】:

我有一个主域和许多子域,现在我想将主域重定向到它的 HTTPS 和其他域到它的子域,例如:

  • main.com 重定向到https://main.com
  • domain1.com 重定向到 domain1.main.com
  • domain2.com 重定向到 domain2.main.com

现在我用这个

RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^www.main.com [OR]
RewriteCond %{HTTP_HOST} ^main.com [NC]
RewriteRule ^(.*)$ https://www.main.com/$1 [R,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

此代码仅重定向 main.com,其他域必须签入 index.php 并重定向到特定的子域,我想在 htaccess 中执行整个工作。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: .htaccess url dns url-rewriting subdomain


【解决方案1】:

这可能就是你要找的:

RewriteEngine On
RewriteBase /

RewriteCond %{SERVER_PORT} 80 
RewriteCond %{HTTP_HOST} ^(?:www\.)?main\.com
RewriteRule ^ https://www.main.com%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} !^(?:www\.)?main\.com
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.com
RewriteRule ^ https://%1.main.com%{REQUEST_URI} [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

首先使用R=302 临时 重定向是有意义的,并且只有在一切正常后才将其更改为R=301 永久 重定向。

显然,这要求对其他域的请求由实现此规则集的 http 主机处理。因此,您很可能希望为这些域定义主机别名,或者在您的 http 服务器中使用默认虚拟主机。

【讨论】:

  • 对不起,第二个重写规则定义中有一个小错误,我在上面修复了。除此之外,我真的不知道“甚至将主域重定向到 https”是什么意思。当然可以,这是有意义的,您的原始规则集也是如此。
  • 感谢您的关注,重定向到 main.com 的 HTTPS 工作正常,但第二部分不起作用 domain1.com 不重定向到 domain1.main.com。
  • 我做了另一个小改动来解决这个问题。对不起那些微不足道的错误。请允许对此进行一般说明:您确实应该能够自己发现这些细节。你不应该只是复制你找到或给出的一些代码,你需要理解这些代码。这也意味着您应该能够根据自己的具体情况和需求进行调整。
  • 干得好!它工作正常,关于你的一般说明,你是对的,我必须阅读更多关于 htaccess 规则的信息,再次感谢你。
  • 这就是精神:让您走上正轨:没有“htaccess 规则”之类的东西。通常命名为“.htaccess”的文件是配置文件,分布式配置文件,而不是 apache http 服务器的集中式主要配置文件。这样的配置文件可以保存各种东西,而不仅仅是重写规则。所以你实际上想阅读 1. .htaccess 样式文件 (httpd.apache.org/docs/current/howto/htaccess.html) 和 2. 重写模块 (httpd.apache.org/docs/current/mod/mod_rewrite.html)。
猜你喜欢
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
相关资源
最近更新 更多