我安装了一个 Slim 框架来创建 API,并将其定位在
/opt/modul/www/api
index.php
slim/
因此 index.php 是我的主要 API 文件。我想在浏览器中通过以下 URL 访问它本地主机/mo/api
为了启用重写模式,我创建了一个 /opt/modul/www/api/.httacces文件
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
</IfModule>
并放入http.conf
Alias /mo /opt/modul/www
<Directory /opt/modul/www>
DirectoryIndex index.html index.php
Order allow,deny
Allow from all
AllowOverride All
</Directory>
但是如果我在浏览器中访问 URL localhost/mo/api,我会在 error.log 中看到
File does not exist: /var/www/html/opt
为什么它仍然出现在 /var/www/html 中?我知道,这是 document_root,但别名不会覆盖它吗?
答案1
为了解决这个问题,我RewriteRule
根据 ALIAS 指向 index.php 的绝对位置。
RewriteRule ^(.*)$ /mo/api/index.php [QSA,L]