我的虚拟主机中有一个.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}}
我做错了什么?
答案 0 :(得分:0)
在htaccess上下文中,RewriteRule
指令的模式相对于htaccess文件所在的目录。所以你需要删除前导斜杠并使用相对路径^api$
而不是{{1 }。
^/api$