.htaccess不适用于特定的重写规则

时间:2018-04-18 22:17:33

标签: apache .htaccess virtualhost

我的虚拟主机中有一个.htaccess文件,该文件在/etc/apache2/sites-enabled/etc/apache2/sites-available中配置如下:

<VirtualHost *:80>
    DocumentRoot "/var/www/html/project/httpdocs"
    ServerName project.localhost
    ServerAdmin webmaster@project.localhost

    <Directory /var/www/html/project>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
        Order allow,deny
        Allow From All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Include conf-available/serve-cgi-bin.conf
</VirtualHost>

我的.htaccess是:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    # Some RewriteRules

    RewriteRule ^api$ api.php
</IfModule>

因此,当我尝试访问任何其他RewriteRule地址时根本没有问题,但是当我尝试访问project.localhost/api时,我得到了404,因为我可以访问{ {1}}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在htaccess上下文中,RewriteRule指令的模式相对于htaccess文件所在的目录。所以你需要删除前导斜杠并使用相对路径^api$而不是{{1 }。

^/api$