Apache在子目录中重写htaccess

问题描述 投票:0回答:1

让我谈谈这一点。

我有一个具有这种结构的php项目

ROOT
.htaccess
--api/
----public/
------index.php
------test.html
--backoffice/

我想要的是使用api / public的index.php来使其工作

domain.com/api/index.php 

代替

domain.com/api/public/index.php 

我一直在尝试重写基础或.htaccess的重写,没有成功,我错过了什么?将.htaccess放在错误的目录中?我必须使用多个.htaccess?

更新:所以我得到了我的两个.htaccess文件,现在我可以使用url domain.com/api/index.php访问,但它会抛出401,这是一些东西......另一方面我可以访问文件test.html位于/ api / public下,当前是url domain.com/api/test.html

这是.htaccess domain.com/api/ .htaccess文件

RewriteEngine On
RewriteBase /api/public/
RewriteCond %{REQUEST_URI} !^/api/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /api/public/$1

domain.com/api/public/ .htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
php apache .htaccess mod-rewrite
1个回答
2
投票

我想你可以使用一个单独的qazxsw poi文件qazxsw poi,其规则如下:

.htaccess

所以这应该在内部重定向到子文件夹in your API folder

RewriteRule ^$ /public [R=301,L]

UPDATE1

我认为在你的情况下这应该工作

public

它还取决于您使用的系统和预设。

UPDATE2

我在XAMPP上做了一些测试,得到了以下结果

把你的ROOT | --api/ | |-- .htaccess | |-- public/ | |-- index.php |-- backoffice/ 放在RewriteEngine On RewriteBase /api/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^api/(.*)$ /api/public/$1 [L] .htaccess所有其他ROOT folder。如你所愿,将delete重命名为.htaccess files in subfolders或其他东西

api

将此_api添加到root

ROOT
  | --.htaccess
  | --/_api/  <<<------- rename
  |     |-- /public/
  |             |-- index.php
  |-- /backoffice/

像以前一样打电话给.htaccess

这个场景按预期在我的测试系统上运行。试试看。

© www.soinside.com 2019 - 2024. All rights reserved.