首页  >  问答  >  正文

在同一台服务器上使用Apache配置重写规则,以便能够访问前端和后端

我有一个Vue.js项目和一个Laravel项目在Apache中。

我把Vue.js放在C:/Apache24/htdocs/vue_project_name,把Laravel放在C:/Apache24/htdocs/laravel_project_name,所以我可以得到以下配置:

虚拟主机文档根目录:"C:/Apache24/htdocs/"。

前端URL:"http://domain_name/vue_project_name"

后端URL:"http://domain_name/laravel_project_name"

后端API URL:"http://domain_name/laravel_project_name/public/api"

我想在输入http://domain_name时重写URL,浏览器将直接跳转到http://domain_name/laravel_project_name。当我输入http://domain_name/api时,浏览器将直接跳转到http://domain_name/laravel_project_name/public/api

例如,我有一个API,我可以调用http://domain_name/laravel_project_name/public/api/login来获取资源,但我希望简化为http://domain_name/api/login来获取资源。

如何实现这个功能?

这是我的httpd-vhosts.conf文件:

<VirtualHost *:80>
    DocumentRoot "C:\Apache24\htdocs"
    ServerName domain_name
    ErrorLog "C:\Apache24\logs\error.log"
    CustomLog "C:\Apache24\logs\access.log" combined
    <Directory "C:\Apache24\htdocs"> 
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

我知道当我输入http://domain_name时,Apache会直接跳转到http://domain_name/laravel_project_name,像这样:

<VirtualHost *:80>
    DocumentRoot "C:\Apache24\htdocs\vue_project_name"
    ServerName domain_name
    ErrorLog "C:\Apache24\logs\error.log"
    CustomLog "C:\Apache24\logs\access.log" combined
    <Directory "C:\Apache24\htdocs\vue_project_name"> 
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

但我认为这会影响后端路径,所以我需要一个更好的解决方案。

谢谢。

P粉946336138P粉946336138277 天前449

全部回复(1)我来回复

  • P粉187160883

    P粉1871608832024-01-17 11:29:04

    Laravel必须指向<project_root>/public,这是你的问题...

    更新与Laravel相关的配置为DocumentRoot: "C:/Apache24/htdocs/laravel_project_name/public"

    我知道你正在使用Apache,但是看看如何将Nginx配置指向那个文件夹。

    回复
    0
  • 取消回复