我在/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重写它,但我不熟悉它。
更新
以下是/etc/apache2/sites-available
中example.com的配置:
<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>
此处位于/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>