首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用htaccess将所有内容重定向到index.php

使用htaccess将所有内容重定向到index.php
EN

Stack Overflow用户
提问于 2013-08-23 23:06:59
回答 5查看 364.3K关注 0票数 150

我正在编写一个简单的基于PHP的MVC-ish框架。我希望这个框架能够安装在任何目录下。

我的PHP脚本获取请求uri并将其分成多个段。它将段1设置为控制器,段2设置为操作。当我这样做的时候,一切都很好:

代码语言:javascript
复制
http://www.example.com/mvc/module/test/

它将转到特定的模块控制器和方法。现在我有了一个默认的控制器,home控制器,它在home文件夹中。

现在,当我直接访问此文件夹时,它将显示一个403 forbidden,因为此文件夹确实存在,因此它也应该返回到http://www.example.com/mvc/index.php

如果我将框架安装在不同的文件夹中,假设文件夹框架必须重定向回http://www.example.com/framework/index.php

我希望将每个文件夹和php文件重定向回index.php,让其他所有内容保持原样。

我遇到的第一个问题是它从不重定向到正确的文件夹,总是重定向到域根文件夹。

这是我尝试过的:

代码语言:javascript
复制
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
EN

回答 5

Stack Overflow用户

发布于 2013-08-23 23:24:14

您可以使用类似以下内容:

代码语言:javascript
复制
RewriteEngine on
RewriteRule ^.+$ /index.php [L]

这会将每个查询重定向到根目录的index.php。请注意,它还将重定向对现有文件的查询,例如图像、javascript文件或样式表。

票数 17
EN

Stack Overflow用户

发布于 2016-12-02 23:52:35

回答很愚蠢,但是如果你找不出为什么不重定向,请检查web文件夹是否启用了以下选项。

AllowOverride All

这将使您能够运行htaccess,它必须正在运行!(有其他选择,但不在将导致问题https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride)

票数 5
EN

Stack Overflow用户

发布于 2020-01-14 21:38:05

如果您仍然想知道如何将所有请求重定向到框架索引处理程序(对于核心框架文件夹和文件),在一些错误/成功尝试之后,我只需要更改.htaccess文件中的RewriteCond

代码语言:javascript
复制
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

上面的条件说明“找不到文件”和“找不到目录”,好吧,如果只是删除“找不到”(!-d)行,并以类似下面的内容结束:

代码语言:javascript
复制
RewriteEngine on
RewriteBase /framework/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /framework/index.php [L,QSA]

它对我来说就像一个护身符

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18406156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档