apache .htaccess 将子文件夹设置为子域名

apache .htaccess 将子文件夹设置为子域名

我想创建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

相关内容