将/ var / www / html / app / api / *重定向到/ var / www / html / api / *

时间:2014-12-22 22:19:47

标签: mod-rewrite apache2.4

我在/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>

0 个答案:

没有答案