搞了个虚拟主机,貌似可以绑定无数个域名,但是域名统统只能指向根目录
正常情况下
a.test.com -> wwwroot/ (index.php
b.test.com -> wwwroot/ (index.php
……
现在想
a.test.com -> wwwroot/a/ (index.php
b.test.com -> wwwroot/b/ (index.php
……
子目录内可能还会有孙子目录。
我在百度上查阅相关资料,发现他们的实现方式把孙子目录写死了。
https://www.cnblogs.com/crxis/archive/2017/06/11/6984618.html
会出现如下问题:
如果访问
需要指向 wwwroot/a/sunzi/ (index.php
然而按照上面的方法并没有成功实现
即使能成功实现。。假如
wwwroot/a/* 里面有很多个孙子目录
需要一个一个地添加进 .htaccess,实在太麻烦了
不过我按照上面的资料,成功弄了单级的子目录
也就是成功通过 a.test.com 访问了 wwwroot/a/ (index.php
然而,php 里面使用了 wwwroot/a/class 里的东西,貌似并不能正常地加载出来。。
由于我之前一般用的 Nginx,对 Apache 不熟悉。有没有 dalao 能给条明路?
另一种思路是直接首页放个 index.php
即 wwwroot/index.php
这里面用来判断当前访问的域名,并返回域名对应的子目录
这个思路的话有没有 dalao 帮我写下实现下。。不知道可行性如何
已解决:
RewriteEngine on
#------- one.yourdomain.com/* -> /wwwroot/one/* -------
RewriteCond %{HTTP_HOST} ^(one.)?yourdomain.com$
RewriteCond %{REQUEST_URI} !^/one/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /one/$1
RewriteCond %{HTTP_HOST} ^(one.)?yourdomain.com$
RewriteRule ^(/)?$ one/ [L]
#-----------------------------------------------------------------
#------- two.yourdomain.com/* -> /wwwroot/two/* -------
RewriteCond %{HTTP_HOST} ^(two.)?yourdomain.com$
RewriteCond %{REQUEST_URI} !^/two/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /two/$1
RewriteCond %{HTTP_HOST} ^(two.)?yourdomain.com$
RewriteRule ^(/)?$ two/ [L]
#-----------------------------------------------------------------
把one/two替换成二级域名和目录名
把 yourdomain.com 替换成你的域名
可以正常访问 two.yourdomain.com/* 里的任何文件!
还有我用的这个虚拟主机有个坑。。会自动拦截子目录里的文件。。。所以要加入白名单。。
1
ysc3839 2020-02-08 01:43:57 +08:00 via Android 1
|
2
CallMeReznov 2020-02-08 01:55:14 +08:00 1
虚拟主机没有面板的吗?
面板里支持多站点多域名绑定的一般 |
3
zero3412 2020-02-08 10:27:31 +08:00
这,,,Apache,Nginx 不都可以域名绑定么
搜索个 Apache 多虚拟机,网上好多教程啊 |
4
opengps 2020-02-08 10:27:59 +08:00
对于虚拟主机这种“强制要求”。我觉得你直接写代码控制更合适,主页里写代码控制某个域名跳某个目录,避免对发布环境产生依赖
|
5
Nekonico OP |