Apache在子目录中重写htaccess
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache在子目录中重写htaccess相关的知识,希望对你有一定的参考价值。
让我谈谈这一点。
我有一个具有这种结构的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]
我想你可以使用一个单独的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
这个场景按预期在我的测试系统上运行。试试看。
以上是关于Apache在子目录中重写htaccess的主要内容,如果未能解决你的问题,请参考以下文章
DirectAdmin Apache - .htaccess 重写
从 Apache (.htaccess) 到 IIS 问题的 URL 重写
apache .htaccess 重写 - 我可以把它移到 httpd.conf
.htaccess伪静态(URL重写)绑定域名到子目录实现子站点
如何在 .Htaccess 中禁用/不允许共享主机 RewriteLog 时,在 Apache 2 中模拟和测试 URL 重写规则?