重定向index.php,使用htaccess将all重定向到index.php
我正在编写一个简单的基于PHP的MVC-ish框架.我希望这个框架能够安装在任何目录中.
我的PHP脚本抓取请求uri并将其分解为段.它使段1成为控制器,段2成为行动.当我这样做时,这一切都很好:
它将转到特定的模块控制器和方法.现在我有一个默认控制器,即家庭控制器,它位于文件夹主页中.
我想将每个文件夹和php文件重定向回index.php,保留其他所有内容.
我遇到的第一个问题是它永远不会重定向到正确的文件夹,总是重定向到域根文件夹.
这是我试过的:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
解决方法:
你的重写规则看起来几乎没问题.
首先确保您的.htaccess文件位于文档根目录(与index.php相同的位置),否则它只会影响它所在的子文件夹(以及其中的任何子文件夹 – 递归).
接下来对您的规则稍作修改,使其看起来像:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/index.php?path=$1 [NC,L,QSA]
目前你只是匹配.这是任何字符的一个实例,至少需要.*来匹配任何字符的任意数量的实例.
$_GET [‘path’]变量将包含伪目录结构,例如/ mvc / module / test,然后您可以在index.php中使用它来确定您想要执行的Controller和操作.
如果你想将整个shebang安装在一个子目录中,比如/ mvc /或/ framework /,那么最简单的方法是稍微改变重写规则以将其考虑在内.
RewriteRule ^(.*)$/mvc/index.php?path=$1 [NC,L,QSA]
并确保index.php位于该文件夹中,而.htaccess文件位于文档根目录中.
$_GET [‘path’]的替代品(18年2月更新和19年1月更新)
实际上并不需要(现在甚至不常见)将路径设置为$_GET变量,许多框架将依赖$_SERVER [‘REQUEST_URI’]来检索相同的信息 – 通常用于确定使用哪个Controller – 但原则是完全相同的.
这确实简化了RewriteRule,因为您不需要创建path参数(这意味着OP的原始RewriteRule现在可以工作):
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$/index.php [L,QSA]
但是,关于在子目录中安装的规则仍然适用,例如,
RewriteRule ^.*$/mvc/index.php [L,QSA]
旗帜:
NC =无大小写(不区分大小写,因为模式中没有字符,所以不是必需的)
L = Last(在重写之后它会停止重写,所以请确保它是重写列表中的最后一个)
QSA =查询字符串附加,以防你有类似的东西?喜欢=你想要保留的penguins并传递给index.php.
标签:htaccess,php
来源: https://codeday.me/bug/20190911/1804309.html
重定向index.php,使用htaccess将all重定向到index.php相关推荐
- .htaccess 重定向_如何使用.htaccess将HTTP重定向到HTTPS
.htaccess 重定向 Chrome and Firefox have started showing insecure warnings on sites without SSL certifi ...
- php跳转隐藏url参数,.htaccess从URL中删除index.php并隐藏参数键
我有以下网址 www.example.com/index.php?tag= xxx 我想使用.htaccess进行如下操作 www.example.com/xxx 我用这段代码完成了: Options ...
- ngin配置301重定向设置方法和nginx子目录301重定向
这篇文章主要介绍了ngin配置301重定向设置方法和nginx子目录301重定向,需要的朋友可以参考下 nginx版本为1.1.19. 若域名由a.com转移到了b.com,并对两个域名有所有权,可以 ...
- linux用echo重定向到文件,Linux – Bash将String重定向到文件
我写了一个简单的脚本,它正在读取文件内容并在此文件中递增一个数字,然后我使用awk保持更改,当我尝试使用'>'重定向新的String时整个字符串重定向到一行,而不是像原来的那样是4行. #!/b ...
- linux重定向多个文件,Linux base shell重定向详解
一.标准输入,标准输出与标准错误输出 在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件.由于文件描述符不容易记忆,shell同时也给出了相应的文件名 ...
- springmvc重定向到另一个项目_SpringMVC——redirect重定向跳转传值
spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. 首先先来介绍一下不带参数的重定向: 我在后台一个 ...
- linux tee 重定向_快乐的linux命令行-重定向
整理自<快乐的linux命令行一书>. linux系统版本: Ubuntu 17.04 本章,我们将介绍命令行最酷的特性,叫做I/O重定向,通过这个工具,可以重定向命令的输入输出,命令的输 ...
- python重定向_Python接口自动化(十)重定向(Location)
在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url. 1.请求转发 该动作是服务器行为,在web容器中进行的,客户端对于跳转是不知道的,地址栏中显示的URL是不会变化的, ...
- linux重定向到程序,技术|Linux I/O 重定向基础
Linux 管理的一个最重要并且有趣的话题是 I/O 重定向.此功能在命令行中使你能够将命令的输入输出取自或送到文件中,或者可以使用管道将多个命令连接在一起以形成所谓的"命令管道" ...
最新文章
- pytorch方法测试——损失函数(CrossEntropyLoss)
- 程序人生【一些经典的资料】
- 做一个”合格“的程序员(二)——学习管理
- 循序渐进Java Socket网络编程(多客户端、信息共享、文件传输)
- 【PAT乙级】1065 单身狗 (25 分)
- mysql按升序创建索引_Mysql中的降序索引底层实现
- Mozilla官方:Firefox 3.5.1问题并非安全漏洞 仅是堆溢出Crash
- 腾讯觅影:AI+医疗不光能诊断癌症,还可以很公益
- 在写HTML和CSS时的黄金规范
- C++内存泄漏的几种情况
- [转载] Python中filter筛选函数匿名参数问题
- 利用路由器实现×××的基本配置方法
- js库编写的环境和准备工作
- 对计算机硬件的工作原理的认识,计算机硬件组成及工作原理
- Arduino + RFID 读取 IC 卡 Arduino uno中获得RFID的UID 并通过串口转发RFID卡号
- 微信群助手(自动整理拼车信息)
- Docker的深入浅出(入门新手篇)
- 快速Euclidean算法
- 计算机文件丢失系统无法启动,文件损坏或丢失windows无法启动_windows无法启动文件损坏解决方法...
- 那些年,被我们误解的程序员