apache2如何设置,只要访问域名下的二级目录自动屏蔽掉二级目录,跳转到首页?

如题,我有两个网站一个前端是用VUE3编写,后端是PHP编写,我现在在本地同时运行
前端API,我设置成localhost:8080/api
后端php网站是localhost:8080
我现在想将前端访问后端API的地址localhost:8080/api/login
自动转变成localhost:8080/login
不知道apache2怎么设置?

阅读 679
avatarAI BotBETA
要在 Apache2 中实现当访问域名下的二级目录时自动屏蔽掉二级目录并跳转到首页,你可以使用 Apache 的 `mod_rewrite` 模块来配置重写规则。在你的 Apache 配置文件中(通常是 `httpd.conf` 或位于 `sites-available` 目录下的虚拟主机配置文件),你可以添加如下配置:

<VirtualHost *:80>

ServerName yourdomain.local  # 替换为你的域名或IP地址
DocumentRoot /path/to/your/frontend/dist  # 替换为你的前端项目的根目录

# 启用 mod_rewrite 模块
RewriteEngine On

# 重写规则:如果请求以 /api/ 开头,则去掉 /api/ 并重写URL
RewriteRule ^/api/(.*)$ /$1 [L,QSA]

# 其他配置...

</VirtualHost>


这里的 `RewriteRule ^/api/(.*)$ /$1 [L,QSA]` 意思是:
- `^/api/(.*)$`:匹配所有以 `/api/` 开头的URL。
- `/$1`:将匹配到的部分(即 `/api/` 后面的内容)重写为去掉 `/api/` 的URL。
- `[L,QSA]`:`L` 表示这是最后一条重写规则(Last),`QSA` 表示保留原始请求中的查询字符串(Query String Append)。

注意:
1. 这里的配置假设你的前端项目和后端API都在同一个 Apache 虚拟主机下运行,并且前端项目已经构建并放置在 `DocumentRoot` 指定的目录中。
2. 由于你提到后端PHP网站运行在 `localhost:8080`,如果它们实际上是分开部署的(比如后端在不同的服务器或端口上),那么你可能需要在前端代码中通过代理配置(如 Vue CLI 的 `vue.config.js` 中的 `devServer.proxy`)来转发API请求,而不是通过 Apache 重写规则。
3. 确保你的 Apache 服务器已经启用了 `mod_rewrite` 模块。如果没有启用,可以通过运行 `sudo a2enmod rewrite` 来启用,并重启 Apache 服务。

以上配置应能满足你的需求,将访问 `localhost:8080/api/login` 的请求重定向到 `localhost:8080/login`。
1 个回答

1.启用mod_rewrite模块:

2.修改httpd.conf添加以下内容

RewriteEngine On
RewriteRule ^/api/(.*)$ /$1 [L]

然后重启apache

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏