【问题标题】:Redirect to subdomain route with www site using .htaccess使用 .htaccess 重定向到带有 www 站点的子域路由
【发布时间】:2018-04-11 15:03:58
【问题描述】:

我有一个网站,我在其中配置了 htaccess 以将所有流量重定向到 www 网站。所以我的网站是这样工作的:www.domain.com

现在我想为所有注册用户支持子域功能,例如 username.domain.com 但我当前的 htaccess 规则不允许当我点击这样的 URL 时它会重定向子域 URL 以包含 www 以及我不这样做不想。 例如:

我点击了 username.domain.com,它变成了 www.username.domain.com

这是我当前的 htaccess 代码:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

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

我如何同时支持主站点的 www?因此,当用户点击子域 URL 时,它不应该在 URL 中添加 www。

我不是 URL 重写方面的专家,所以如果我遗漏了一些明显的东西,我深表歉意。

谢谢

【问题讨论】:

  • 你的 Apache 版本是多少?
  • @anubhavamy apache 版本是 2.4.7

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

在 Apache 2.4+ 上,您可以在站点根目录 .htaccess 中使用这些规则:

RewriteEngine on

# if not main domain skip all rules
RewriteCond %{HTTP_HOST} !^(?:www\.)?domain\.com$ [NC]
RewriteRule ^ - [L]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ %{REQUEST_SCHEME}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L]

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

【讨论】:

  • 感谢@anubhava 的帮助。
【解决方案2】:

你可以使用:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

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

【讨论】:

  • 如果你能指定域名就更容易了。如果不是这种情况,请告诉我。
  • 谢谢@Croises。它已经解决了重定向问题,但现在我的主站点流量也进入了子域路由。例如:www.domain.com 和 username.domain.com 访问相同的路线,我无法访问我的主网站,即没有子域。有什么帮助吗?
  • 举个例子说明你想做什么。
  • 将子域改写成别的东西?
  • 我希望当用户键入 www.domain.com 时,它应该运行我的主网站,并且所有其他 url 应该对应于它们的控制器和操作。但是,如果我键入子域 url,例如 username.domain.com,那么它应该由我的应用程序中特定控制器的操作来处理。您提供的重定向代码正在解决重定向问题,但由于 www.domain 中的 www 在我的应用程序中被视为用户名,所有 www.domain.com 都将转到处理子域路由的控制器操作。
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 2018-03-27
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-21
  • 2014-05-26
相关资源
最近更新 更多