我有一个前端应用程序,/var/www/html/app
该应用程序的 API 位于/var/www/html/api
. 为 设置了/var/www/html/app
一个名为example.com的虚拟主机。现在,我想要它,所以当用户访问example.com/api时,它将所有请求重定向到/var/www/html/api
.
示例:用户在他们的浏览器中输入http://example.com/api/some/call/var/www/html/app/api/some/call
- 而不是服务器寻找/var/www/html/api/some/call
.
完成这项工作的最佳方法是什么?我尝试使用仅适用于 /api 的符号链接,但不适用于 /api 之后的可变路由。我想我可以让它与 mod rewrite 一起工作,但我对它并不熟悉。
更新
这是 example.com 的配置/etc/apache2/sites-available
:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/app
ServerName example.com
ServerAlias www.example.com
<Directory /var/www/html/app>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
在 .htaccess 文件中/var/www/html/app
(和 .htaccess 文件中的相同/var/www/html/api)
:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>