.htaccess 如何设置子文件夹的htaccess

0yycz8jy  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(97)

我现在有这个.htaccess:

DirectoryIndex index.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA]

字符串
如果我在根文件夹上设置我的脚本,它可以工作,但是如果我创建一个名为'api'的新文件夹并将所有脚本移动到那里,则无法按预期工作,并且我看到一个空白页。
我这样修改了.htacess:

DirectoryIndex index.php
RewriteEngine on
RewriteBase /api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /api/index.php [QSA]

erhoui1w

erhoui1w1#

不幸的是,从配置中并不完全清楚,但有两种不同的路径机制:

RewriteBase /api/

字符串
这与请求(或浏览器)是“相对的”。即https://example.com/api/
不过……

RewriteRule ^(.*)$ /api/index.php [QSA]


这是相对于服务器的。所以在服务器内部,你需要在一个名为“api”的根目录中拥有这个文件。
简而言之,我认为你需要的是:

RewriteRule ^(.*)$ api/index.php [QSA]


(note缺少的起始斜杠-表示相对于文档根的路径,而不是绝对服务器路径)
顺便说一句,使用RewriteBase /api/,它实际上意味着您不关心其他(未定义的)根路径(例如/api2/xx将不匹配)。因此,可能有一个更简单的方法来解决您的原始问题:只要移动你的原始.htaccess文件到API目录.

相关问题