Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >现有目录的RewriteRule追加查询

现有目录的RewriteRule追加查询
EN

Stack Overflow用户
提问于 2012-10-01 21:19:42
回答 2查看 78关注 0票数 2

我正在为我的新PHP站点实现一个MVC模式,URL结构如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
example.com/module/controller/action?params=...

这是我的.htaccess文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Options -Indexes

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) portal.php?mvc=$1 [QSA,L]

规则基本上是正确的,但是,如果我在公共空间中有一个与模块同名的目录,如果没有尾部斜杠,它会将?mvc=[directory name]附加到URL的末尾。

例如:

example.loc/index变成了example.loc/index/?mvc=index

example.loc/index/保持不变。

如何才能使用户在输入example.loc/index时具有相同的行为,就好像包含了结束斜杠一样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-01 21:26:29

这是因为mod_dir的DirectorySlash directive干扰了你的重写。mod_dir和mod_rewrite都位于同一个URL-file映射管道中,无论其他模块在做什么,它们都会做自己的事情。因此,当mod_dir认为一个请求是对一个目录的请求,并且缺少尾随的斜杠时,它将标记要重定向的URL,但是URL继续沿着mod_rewrite对URI执行其操作的处理流水线。在代码行的末尾,两个模块都修改了URI 。URI被标记为301重定向,因此对浏览器的响应是重定向到新的URI (已经损坏)。

解决方案:您需要在mod_rewrite中处理尾随斜杠,或者简单地关闭DirectorySlash (尽管您应该注意信息泄露的安全警告)。您可以处理mod_rewrite中的尾部斜杠,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]

确保将*添加到RewriteEngine on行的正下方。您需要在任何MVC路由发生之前应用此功能。

票数 0
EN

Stack Overflow用户

发布于 2012-10-01 21:30:25

是否需要RewriteCond %{REQUEST_FILENAME} !-f指令?我猜Apache会将example.loc/index/视为文件系统中的文件夹,而不是文件。

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

https://stackoverflow.com/questions/12681260

复制
相关文章
Mysql在字段现有内容后面追加内容
在发布系统中所有前置任务里面增加一些内容,发布系统中大约有200+的项目,手动是不可能手动的,只有在数据库中操作了。
行 者
2019/12/05
3K0
Access追加查询
大家好,上节介绍了操作查询中的更新查询,本节介绍追加查询的内容。操作查询的注意点都是一样的,就不再重复。
无言之月
2020/08/25
3.4K0
Access追加查询
Mac OSX 给现有的应用追加基于文档的功能
在Xcode中创建Cocoa Application 工程时,通常有两种选择类型:<code>基于文档的Application</code> 和<code>非文档的Application</code>,具体是哪一种类型,关键在于创建工程的时候,你是否选中下图中的<code>Create Document-based Application</code>选项:
代码行者
2018/08/23
6440
Mac OSX 给现有的应用追加基于文档的功能
RewriteRule指令[通俗易懂]
作为RewriteRule指令的第三个参数。 Flags是一个包含以逗号分隔的下列标记的列表:
全栈程序员站长
2022/08/27
3910
Java将内容追加/添加到现有文件
如果您希望代码创建一个新文件并删除以前的现有文件,则FileWriter可以轻松代替它。要替换现有文件中的所有内容,请使用以下命令:
用户7886150
2021/04/28
3.1K0
多维数组追加,修改,查询,删除
找到指定元素进行修改,查询,删除,追加,和一维数组操作实际一样,关键找到需要修改多维数组需要修改元素的位置。修改代码演示:
十月梦想
2018/08/29
1.5K0
【Java实现】向现有Map键追加值而非覆盖
使用this.put(“String”, “String”)方法添加一个键值对。但是,它会覆盖现有值,而我想使用同一个键存储和配对多个值。
JavaEdge
2022/11/30
1.3K0
RewriteCond RewriteRule
## Rules for TR and ES country sites RewriteCond %{REQUEST_URI} ^/(tr|es)$ [NC] RewriteRule ^(.*) https://xx.com [L,R=301] ##
全栈程序员站长
2022/09/01
2170
薪酬数据的追加查询 - 附视频
我们在年底做薪酬的数据分析的时候,需要把一年的薪酬数据做做追加的汇总,也就是说把每个月的数据做汇总,在做这个数据汇总的时候,我们在EXCEL的 PQ里就可以用到追加查询,用追加查询功能可以在几秒钟之间来完成数据的汇总。
王佩军
2022/02/10
7790
薪酬数据的追加查询 - 附视频
linux使用--根目录空间不足,追加空间到根目录下
最近在爬虫,要保存大量的源码在linux上,最后发现根目录不足,想要追加根目录的空间,我的系统是centos7,还好之前分配了一整个系统盘给centos,有200g,根目录目前使用了50g,现在从home目录分配100g给root目录,剩50g给自己,也就是home目录,我目前就给home留了40g,之前都给的时候出了些小问提,还没琢磨出来,就少分一点,我们先用着,可能是 Free  PE 的问题 。如果是安装时候硬盘空间用完了,也可以进行再挂载一个硬盘进行追加空间。
拓荒者
2019/08/22
15.4K0
linux使用--根目录空间不足,追加空间到根目录下
翻遍全网!找到最好的【Java实现】向现有Map键追加值而非覆盖
使用this.put(“String”, “String”)方法添加一个键值对。但是,它会覆盖现有值,而我想使用同一个键存储和配对多个值。
JavaEdge
2021/04/09
6710
重定向 rewriteRule
大家好,又见面了,我是你们的朋友全栈君。 重定向学习视频 https://www.imooc.com/learn/798 1、RewriteRule R 说明 RewriteRule ^/?(.
全栈程序员站长
2022/08/28
3.6K0
重定向 rewriteRule
Apache 中RewriteRule 规则参数[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。[size=medium] Apache 中RewriteRule 规则参数 Apache模块 mod_rewrite 提供了一个基于正则表达式分析器的重写引擎来实时重写URL请求。它支持每个完整规则可以拥有不限数量的子规则以及附加条件规则的灵活而且强大的URL操作机制。此URL操作可以依赖于各种测试,比如服务器变量、环境变量、HTTP头、时间标记,甚至各种格式的用于匹配URL组成部分的查找数据库。
全栈程序员站长
2022/08/28
3.5K0
Python追加Excel追加数据
前面我分享了 Excel 的读写:Python 实现 Excel 的读写操作:https://bornforthis.cn/column/pyauto/auto_base05.html
AI悦创
2022/07/17
2.9K0
Apache的URL地址重写(RewriteCond与RewriteRule)
大家好,又见面了,我是你们的朋友全栈君。Apache的URL地址重写 http://hi.baidu.com/sonan/blog/item/c408963d89468208bba16716.html 第一种方法:Apache环境中如果要将URL地址重写,正则表达式是最基本的要求,但对于一般的URL地址来说,基本的匹配就能实现我们大部分要求,因此除非 是非常特殊的URL地址,但这不是我要讨论的范围,简单几招学会Apache中URL地址重写,通过实例展示,轻松学会URL地址重写: URL实例
全栈程序员站长
2022/06/30
2.4K0
如何在 Linux 中为现有用户创建主目录?
在Linux系统中,每个用户都有一个主目录,通常称为home目录,用于存储用户的个人文件和配置信息。然而,有时候我们会创建一个新的用户,但是忘记或者没有选择为其创建一个主目录。在这种情况下,我们需要为现有用户创建主目录。本文将介绍如何在Linux中为现有用户创建主目录。
网络技术联盟站
2023/04/08
4.6K0
python写文件追加 按行追加_python 追加写入
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
3.6K0
Apache中 RewriteRule 规则参数介绍
大家好,又见面了,我是你们的朋友全栈君。Apache中 RewriteRule 规则参数介绍
全栈程序员站长
2022/08/27
12K0
php rewriterule 规则,如何将一条RewriteCond 对应多个RewriteRule规则
RewriteCond是对RewriteRule的条件筛选,一般情况下一个RewriteRule前面有多个RewriteCond,我们想让bbs这个子域名下的链接访问bbs这个目录,而其他子域名则访问web这个子目录,于是有了下面这种写法。
全栈程序员站长
2022/08/28
5330
SQL练习之不破坏应用程序现有查询的修改模式
     当我还是一个菜鸟的时候,当然现在也是,当我的软件需求发生变化时,并且数据库设计同样要求发生变化,我通常会放弃原有的代码(或者对原有的代码进行大改),先在我知道了两个不破坏应用程序现有查询的修改模式,下面就来一个个介绍! 假设你的公司有一张记录在数据库中的设备登记表: 资产标识    描述              收到日期 50430     桌面PC           2016-5-6 50431     19寸监视器     2016-5-7 现在公司再融资之后,进行了扩张,在另一个地方又建
郑小超.
2018/01/24
8260
SQL练习之不破坏应用程序现有查询的修改模式

相似问题

使用rewriterule忽略现有目录

11

RewriteRule不排除现有的文件/目录

10

具有现有子目录的.htaccess RewriteRule行为

10

Apache RewriteCond和RewriteRule跳过现有文件和目录

15

RewriteRule混淆:模式还匹配现有目录名

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文