我想创建admin.example.com
,我使用的 URL 路由器是www.example.com/admin
,我不想共享相同的登录会话。所以我正在考虑使用子域来解决这个问题。
管理员实际上不是一个文件夹,它是来自我的路由文件的路由。我正在使用 Laravel 5.1。
我想要的是当用户访问时
http://admin.example.com
,它实际上指向http://www.example.com/admin
。但是,用户浏览器仍然显示http://admin.example.com
知道如何在 .htaccess 中操作吗?
Options +FollowSymLinks
RewriteEngine on
#Below is the code I added for the admin subdomain which doing a redirect, but I would like a mapping, not redirect
RewriteCond %{HTTP_HOST} ^admin.example.com
RewriteRule ^(.*)$ http://www.example.com/admin/$1 [L,NC,QSA]
#end of subdomain
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
上面的代码所做的是重定向,但我想要的是映射。
vhost 配置文件
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "C:\Bitnami\www\example.com\public"
</VirtualHost>
<VirtualHost *:80>
ServerName admin.example.com
DocumentRoot "C:\Bitnami\www\example.com\public"
</VirtualHost>
答案1
使用 .htaccess 则无法实现这一点。您必须在 Apache 配置中直接配置 VirtualHost。
你可以合并两个虚拟主机:
<VirtualHost *:80>
ServerName www.example.com
ServerAlias admin.example.com
DocumentRoot "C:\Bitnami\www\example.com\public"
</VirtualHost>
然后,您必须在 Laravel 中调整路由。但是,这会将问题变成编程问题,从而使其偏离本网站的主题。我在快速谷歌搜索中找到了几个示例laravel multiple domains
,我建议您也这样做。
答案2
听起来您正在寻找反向代理。通常最简单的方法是从 VirtualHost 条目进行配置:
<VirtualHost *:80>
ServerName admin.example.com
ProxyPass / http://www.example.com/admin/
ProxyPassReverse / http://www.example.com/admin/
</VirtualHost>
但ProxyPass
指令在上下文中也有效.htaccess
。