【问题标题】:.htaccess redirect all subdomains to one directory, and preserve url.htaccess 将所有子域重定向到一个目录,并保留 url
【发布时间】:2014-02-07 17:42:39
【问题描述】:

我下午大部分时间都在谷歌上搜索这个,但似乎根本无法让它工作(我对 htaccess 有点生疏!)

基本上我有一个网站,每个注册的用户都有一个子域(例如 userA.example.com、userB.example.com)

我一直在使用 php 脚本来注册这些子域,但现在有超过 500(!) 个子域,我正在移动到一个新服务器,并认为我可以实现一个新系统。

我基本上希望附加到域的任何子域指向单个文件夹并将原始 url 保留在浏览器的地址栏中,这样我就不必使用服务器资源为每个用户注册一个新的子域!

我已经设置了所需的通配符 DNS。

我正在使用以下代码执行重定向,但地址仍然更改:

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.XXXX\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.XXXX\.com$ [NC]
RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*)$ http://XXXX.com/frontend/ [L,NC]

这确实可以很好地重定向,但我无法找到一种方法来保留带有子域的原始 URL。

感谢您的帮助

【问题讨论】:

  • 应该指向/frontend/username/username
  • @JustinIurman 只是指向 /frontend/ php 从 URL 的子域部分抓取用户名
  • 如果你只给出一个相对的重写路径而不是一个绝对的 URL,这难道不能正常工作吗……?

标签: apache .htaccess mod-rewrite redirect


【解决方案1】:

您需要首先通过您的 Apache 配置启用 mod_proxy,否则 URL 将会更改,因为您在此处更改域名。

一旦启用mod_proxy,试试这个规则:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^([^.]+)\.XXXX\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://XXXX.com/frontend/ [L,NC,P]

【讨论】:

  • 我已启用 mod_proxy,但我似乎被定向到不存在的 subdomain.xxxx.com/frontend/。也许我的 mod_proxy 设置不正确
  • 您只想转发给http://xxxx.com/frontend/吗?你怎么知道它来自哪个子域?
  • 不,抱歉,假设 'userA' 转到 userA.xxxx.com,网址应保留为 userA.xxxx.com 但从 xxxx.com/frontend/ 加载
  • 太棒了,这行得通!唯一的问题是对文件、图像等的任何引用都指向不存在的 userA.xxxx.com/frontend,但我想我可以将所有这些更新为绝对 url,除非有其他方法吗?跨度>
  • 现在有一些奇怪的行为,每个文件都以 /frontend/index.html 的形式返回!
【解决方案2】:

我认为处理任何复杂重定向的更简单方法是使用 PHP。在服务器配置文件或 .htaccess 文件中,使用 FallbackResource 指令将所有 URL 请求发送到单个 PHP 文件。在该文件中,使用$_SERVER['HTTP_HOST'] 获取主机名,使用$_SERVER['REQUEST_URI'] 获取原始URI。然后就可以使用了

header('Location: https://subdomain.example.com/');

重定向到您希望的任何计算 URL。

【讨论】:

    猜你喜欢
    • 2014-04-19
    • 2016-02-19
    • 2018-07-18
    • 2023-03-27
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多