我正在编写一个简单的基于PHP的MVC-ish框架。我希望这个框架能够安装在任何目录下。
我的PHP脚本获取请求uri并将其分成多个段。它将段1设置为控制器,段2设置为操作。当我这样做的时候,一切都很好:
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,让其他所有内容保持原样。
我遇到的第一个问题是它从不重定向到正确的文件夹,总是重定向到域根文件夹。
这是我尝试过的:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
发布于 2013-08-23 23:24:14
您可以使用类似以下内容:
RewriteEngine on
RewriteRule ^.+$ /index.php [L]
这会将每个查询重定向到根目录的index.php。请注意,它还将重定向对现有文件的查询,例如图像、javascript文件或样式表。
发布于 2016-12-02 23:52:35
回答很愚蠢,但是如果你找不出为什么不重定向,请检查web文件夹是否启用了以下选项。
AllowOverride All
这将使您能够运行htaccess,它必须正在运行!(有其他选择,但不在将导致问题https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride)
发布于 2020-01-14 21:38:05
如果您仍然想知道如何将所有请求重定向到框架索引处理程序(对于核心框架文件夹和文件),在一些错误/成功尝试之后,我只需要更改.htaccess文件中的RewriteCond
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
上面的条件说明“找不到文件”和“找不到目录”,好吧,如果只是删除“找不到”(!-d)行,并以类似下面的内容结束:
RewriteEngine on
RewriteBase /framework/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /framework/index.php [L,QSA]
它对我来说就像一个护身符
https://stackoverflow.com/questions/18406156
复制相似问题