我有一个项目,它有一个指向两个不同站点的启动页面。这些站点托管在同一台服务器上,它们应该位于不同的文件夹中以便更好地维护。
文件夹结构应该是这样的:
/home/user1234/public_html
/splash/
index.html
css/
images/
...
/site1/
index.php
css/
images/
...
/site2/
index.php
css/
images/
...
主要站点(站点 1 和站点 2,可能是两个 Wordpress 安装)必须可以在 url 结构之类的子目录下访问,而不是子域!所以url结构应该是:
www.MySite.tld --> Splash
www.MySite.tld/site1 --> Site1
www.MySite.tld/site2 --> Site2
现在我必须将这些 url 与它们在服务器上的相应目录相匹配。但我不知道该怎么做。不得不说是共享主机服务器,所以只能用htaccess和mod_rewrite来完成这个吧?
因此,在虚拟主机的管理界面中,我将 www.MySite.tld 指向 /splash 文件夹。然后我将 .htaccess 放在那个文件夹中,并将请求重写到“虚拟文件夹”/site1 和 /site2,如下所示:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/(site1|site2)/?$ [NC]
RewriteRule ^(.*)$ /home/user1234/public_html/%1 [L]
这不起作用,因为据我所知,不能仅使用 mod_rewrite 重写当前 DOCUMENT_ROOT (/splash) 之外的文件。所以我试图将 www.MySite.tld 指向 /public_html 而不是 /splash 的一级。现在对 /site1 和 /site2 的请求肯定可以工作,但对 / 的请求默认返回 404,因为如您在上面的文件夹结构中所见,其中没有索引文件。因此,我还将 .htaccess 放在 /public_html 中的上一级,并遵循以下规则:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/?$ [NC]
RewriteRule ^(.*)$ /splash [L]
现在可以访问启动页面,但是在 url 的末尾附加了一个“/splash”,这是我不想要的!
我一直在寻找解决方案好几个小时,并尝试了迄今为止发现的许多建议,但这些都没有解决我的问题。我尝试的最后一件事是使用 mod_rewrite 设置一些虚拟主机,但我也无法让它工作。可能我对 mod_rewrite 和所有其他 apache 的东西还不够确认。;-)
或者我可能只是缺少一些基本的东西,比如设置一个正确的 RewriteBase ......这个 url + 文件夹结构完全可以用 mod_rewrite 完成吗?如果是,我必须设置哪些重写规则?如果没有,我可以使用任何替代方案吗?任何帮助将不胜感激。