dash.example.com/link1/* 始终作为 link1.example.com/* 提供

dash.example.com/link1/* 始终作为 link1.example.com/* 提供

我尝试了所有方法,但没找到合适的答案。我很确定这肯定是重复的,但请告诉我正确的答案。

这是我的情况。项目位于仪表盘.example.com/link1,还有“n”个其他链接,如仪表盘.example.com/link1/sub1、仪表盘.example.com/link1/sub1/sub2 等等...但是,我希望它在 URL 中以 link1.example.com/sub1、link1.example.com/sub1/sub2 等等的形式提供...

我在 .htaccess 中尝试过类似这样的操作

RewriteCond %{HTTP_HOST} ^dashboard\.example\.com$
RewriteRule ^([^/.]+)(/.*)?$ http://$1.example.com$2 [L,R=301]

通过这样做,我成功地重定向到link1.example.com 但是的,那里没有我想要的项目内容(dashboard.example.com/link1

我之前也尝试过如下方式使用代理,但没有成功。

<VirtualHost *:80>
    ServerName link1.example.com
    ServerAdmin webmaster@localhost
    ProxyPreserveHost On
    ProxyPass / http://localhost/dashboard/
    ProxyPassReverse / http://localhost/dashboard/
</VirtualHost>

我知道我不只是在那里,谢谢你试图帮助我。

答案1

最好的做法是将 link1.example.com 作为 ServerAlias 添加到 dashidone.example.com VHost,并在 Host 标头为 link1 时正确重写 URL。

RewriteCond %{HTTP_HOST} ^dashboard\.example\.com$
RewriteRule ^([^/.]+)(/.*)?$ http://$1.example.com$2 [L,R=301]

RewriteCond %{HTTP_HOST} ^link1\.example\.com$
RewriteRule ^(.*)$ /link1/$1 [L]

类似这样。我还没有测试过,但它应该工作。

相关内容