【问题标题】:redirect all requests to subdomain to an appropriate folder将所有对子域的请求重定向到适当的文件夹
【发布时间】:2018-02-15 06:57:50
【问题描述】:

我有多个客户,我有子域 client1.example.com client2.example.com ...等等等等

现在在我的根目录中,我有一个通用代码库,其余部分因客户而异

所以在我的根目录中我有这些文件夹 mymainrepo 客户端1 客户端2

mymainrepo 包含所有通用代码

client1 包含多个文件夹,例如缓存 dbsettings client2 包含多个文件夹,例如缓存 dbsettings

但是缓存和数据库设置的内容对于每个客户端都是不同的。 所以我想要做的是,如果一个请求来自客户端并且它要求缓存文件夹内容,我希望它从该客户端文件夹中提供服务

所以如果请求是 client1.example.com/cache 它将提供来自

的内容
doc root
    |
    |
     -------client1
                |
                |_______cache

如果请求是 client2.example.com/cache 它将从

doc root
        |
        |
         -------client2
                    |
                    |_______cache

等等等等。

任何帮助将不胜感激 谢谢

** 已编辑 **

好的,所以我尝试了这个,这个有点工作

RewriteEngine on
RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.domain.com$[nc]
RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [r=301,nc]
DirectoryIndex client1/index.html

问题是我想要这个动态而不是 client1 硬编码

DirectoryIndex client1/index.html

我试过了

目录索引 %1/index.html

但这没有用

任何帮助将不胜感激

【问题讨论】:

  • 您可以发布您的完整 .htaccess 吗?您是否希望这条新规则仅重写 /cache/ URI?

标签: .htaccess mod-rewrite apache2


【解决方案1】:

你可以使用类似下面的东西

RewriteEngine on


RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.domain.com$
RewriteRule ^.*$ /%1%{REQUEST_URI} [L]

这会将client.domain.com/path 重写到主文档根目录的/client 文件夹中。因此,如果请求是 client.domain.com/cache,这将在内部将其重定向到 /client/cache,向您显示该文件夹中的内容。

【讨论】:

  • 不幸的是,它什么也没做...没有重定向... mod_rewrite 已启用并且工作正常。但是这些规则不起作用
  • 在浏览器中输入sub.domain.com 会发生什么?您是否收到任何服务器端错误?还要确保该规则在任何其他重写规则之前位于您的 htaccess 顶部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 2017-05-29
  • 2017-03-06
  • 2012-12-07
相关资源
最近更新 更多