当目录存在时,htaccess 重定向无法重定向

2024-01-22

为了制作友好的 URL,以下是应用的 htaccess 代码:

RewriteEngine On

RewriteCond %{THE_REQUEST} /.+?\.php[\s?] [NC]
RewriteRule ^ - [F]

RewriteRule    ^([^/\.]+)$    index.php?id1=$1    [NC,L,QSA]  
RewriteRule    ^([^/\.]+)/([^/\.]+)$    index.php?id1=$1&id2=$2    [NC,L,QSA] 

这现在适用于:

  1. mydomain.com/pages to mydomain.com/index.php?id1=pages

  2. mydomain.com/pages/xyz to mydomain.com/index.php?id1=pages&id2=xyz

另外,当我进入mydomain.com/index.php?id1=pages&id2=xyz手动输入 URL,它会重定向到mydomain.com.

现在,当我输入另一个像mydomain.com/templates其中 templates 是一个存在的目录,它重定向到mydomain.com/templates/?id1=templates

我尝试添加这些行但徒劳:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]

我的目录结构:

www/
    .htaccess
    index.php  <--- main router
    templates/
            img/
            css/
            ...
            ...
    other_directories/
    ...
    ...

index.php应该收到 id1 和 id2。

我该如何使用 htaccess 避免这种情况(当存在具有该名称的目录时)?

Note:这个问题已经被问过here https://stackoverflow.com/questions/36835920/htaccess-redirect-when-directory-exists。但再次发帖,因为它没有获得足够的浏览量,也没有回答问题!


您应该使用重定向规则在目录前面强制添加尾部斜杠:

RewriteEngine On

RewriteCond %{THE_REQUEST} /.+?\.php[\s?] [NC]
RewriteRule ^ - [F]

# add a trailing slash to directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=302]

RewriteRule ^([^/.]+)/?$ index.php?id1=$1 [L,QSA]

RewriteRule ^([^/.]+)/([^/.]+)/?$ index.php?id1=$1&id2=$2 [L,QSA] 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当目录存在时,htaccess 重定向无法重定向 的相关文章

  • 搜索引擎如何找到相关内容? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google 在解析网络时如何找到相关内容 例如 Google 使用 PHP 原生 DOM 库来解析内
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 如何使用 phpunit 运行单个测试方法?

    我正在努力运行一个名为testSaveAndDrop在文件中escalation EscalationGroupTest php with phpunit 我尝试了以下组合 phpunit EscalationGroupTest escal
  • 使用 mod_proxy 进行反向代理,保留原始请求 URL

    我已经使用 mod proxy Apache2 配置了一个反向代理 监听 127 0 0 1 80 将所有请求代理到 127 0 0 1 8080 所以我配置了 mod proxy 如下所示 ProxyPreserveHost On Pro
  • 如何检查PHP变量是否包含非数字?

    我只是想知道检查 PHP 变量中是否有非数字的方法以及它是否也检测字符之间的空格 需要确保我的表单字段中没有添加任何奇怪的内容 提前致谢 如果您的意思是您只想要一个包含数字的值 那么您可以使用ctype digit http php net
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 扩展蓝图类?

    我想覆盖timestamps 函数中发现Blueprint班级 我怎样才能做到这一点 e g public function up Schema create users function Blueprint table table gt
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 使用 preg_replace 仅替换第一个匹配项

    我有一个结构类似于以下的字符串 aba aaa cba sbd dga gad aaa cbz 该字符串每次都可能有点不同 因为它来自外部源 我只想替换第一次出现的 aaa 但其他人则不然 是否可以 可选的第四个参数预替换 http php
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • PHP 中只保留数组的前 N ​​个元素? [复制]

    这个问题在这里已经有答案了 有没有办法只保留数组的前 N 个 例如 10 个 元素 我知道有array pop 但是有没有更好 更优雅的方法呢 您可以使用array slice http php net array slice or arr
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • 如何在 Laravel 中使用 PUT http 动词提交表单

    我知道这个问题可能已经提出 但我就是无法让它发挥作用 如果有人可以帮助我 我将非常感激 我安装了 colletive form 但答案也可以是 html 表单标签 现在列出我的表格 我的路线和我的例外情况 Form model array
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一

随机推荐

  • 如何为 PHP 8 设置 VS Code 扩展 Intelephense?

    我想将我购买的 Visual Studio Code 扩展设置为使用 PHP 8 版本 因为它的 intelisense 功能 检查defaultSettings json对于 intelephense 搜索查询给出了很多点击 但只有一个对
  • 偏差在神经网络中的作用是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我知道梯度下降和反向传播算法 我不明白的是 什么时候使用偏差很重要以及如何使用它 例如 当映射AND函数 当我使用两个输入和一个输出时 它
  • 有没有像 Python 的 easy_install 这样的 Java 包管理器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有包管理器 http en wikipedia org wiki Package manager对
  • “此方法已被弃用”对于应用程序开发人员意味着什么

    我看到不少好旧有用的方法 http developer android com reference android webkit WebView PictureListener html onNewPicture 28android web
  • Web 服务或 Web 服务

    我正在创建一个应用程序 该应用程序将与安装 WCF Web 服务的单个服务器进行通信 我对这个过程有点陌生 想知道从长远来看 这两个选项中哪一个更适合处理大量用户的负载 1 在多核服务器上创建并安装单个 Web 服务 以便所有客户端应用程序
  • Chrome PDF 查看器下载按钮在 window.open() 选项卡上不起作用

    我正在开发一个项目 它将 http 请求发送到 spring boot 作为回应 我收到了带有 PDF 文件的流 我需要在新选项卡中打开此文件 并使用 Chrome PDF 查看器的所有功能 尤其是下载功能 这是我处理响应并打开包含收到的
  • 如何将 Ruby on Rails 生产挂载点包含在电子邮件的 url_helpers 中?

    tl dnr 我的页面链接很好 但链接到非页面文本 电子邮件 缺少生产应用程序安装点 detail 我的 RoR 应用程序在开发和生产中使用略有不同的 URL 在开发中 顶级实体是资源模型 http localhost 3000 ENTIT
  • 如何从 Intellij IDEA 中删除指向旧/丢失源的(虚拟)断点?

    使用 Intellij v14 和现在的 v15 我设置了断点来调试来自 Tomcat 7 中运行的 Web 应用程序的外部依赖项 通常是快照版本 的尚未发布的类 当我将该外部依赖项更改为发布版本时 重新编译项目并在调试模式下运行 即使断点
  • Swift Codable - 解析可以包含不同数据类型的 JSON 数组

    我正在尝试解析一个 JSON 数组 它可以是 config data name illuminate config title Blink name shoot config title Fire 或者它可以是以下类型 config dat
  • 在 Solaris 上构建 Boost

    Boost 会完全构建在 Solaris 上吗 在我去支付支持合同以将 Sun Studio 12 2 修补到最新版本之前 我想知道是否有人在这方面取得了成功 特别是 Proto Spirit 我遇到了一些错误 有些错误看起来已经在补丁中解
  • c# 将图像(缩放)绘制为图形,无法正确插值。修复?

    我有一个 1px 宽和一定高度的图像 我需要在其 OnPaint 事件上在控件的整个宽度上绘制此图像 我可以绘制它 但不正确 看起来当它拉伸它时 它实际上并没有填充所有像素 就好像插值关闭一样 有没有办法说 别再自作聪明了 直接画出来吧 我
  • NG-bootstrap 和 Angular 9 兼容性

    升级到 Angular 9 后 我收到以下与 ng bootstrap 相关的错误 src app shared Components form controls dropdown select dropdown select compon
  • 我需要解决 Excel 猜测数据类型问题

    我正在创建一个实用程序来将数据从 Excel 导入到 Oracle 数据库 我有一个固定的 Excel 文件模板 现在 当我尝试通过 Jet 提供程序和 ADO Net Ole 连接工具导入数据时 我发现以下问题 有一些列尚未导入 因为它们
  • 宏未显示在宏表中

    我正在 excel 2016 中编写 VBA 宏 我编写的带有参数的宏不会显示在宏表中 仅显示那些没有参数的宏 帮助 带参数的宏在宏框中不可见 因为将它们放在那里没有意义 如果它们需要参数来运行 则无法从宏框中运行它们 因为无法向相关宏提供
  • .net 对象平等

    假设我们有两个对象 o1 和 o2 定义为 System Object 在我的情况下 o1 和 o2 可以是以下任何类型 String Int32 Double Boolean DateTime DBNull 那么我如何检查 o1 和 o2
  • 无效的 Podfile 文件意外模板 EOS

    我已经与这个错误作斗争好几天了 试图开始一份新工作 尝试在 React Native cli 项目上运行 pod install 时遇到问题 我已经尝试了这里所有可能的解决方案 但不适用于我的 错误 Invalid Podfile file
  • 用于匹配“A-Z、a-z、0-9、_”和“.”的正则表达式

    我需要一个正则表达式 它只允许输入 A Z a z 0 9 字符和点 I tried A Za z0 9 但是 这没有用 我该如何修复它 A Za z0 9 从字符串的开头到结尾 匹配这些字符中的一个或多个 Edit 注意 and 匹配 a
  • 任意多边形中最大的内接矩形

    我使用 OpenCV Stitching 已经有一段时间了 现在我想做拼接的最后一步 裁剪图像 这就导致找到一般多边形中最大的内接轴平行矩形 我已经用谷歌搜索并找到了一些答案 如何在 OpenCV 中裁剪到最大的内部边界框 https st
  • Flex 中继器和事件监听器

    乍一看 Repeater 控件看起来非常强大 但现在我有了新的想法 手头的问题 为子级添加事件监听器 Repeater 对象绑定到 ArrayCollection 并对其进行迭代 为每个项目创建新的 Vbox 子项 现在 对于每个孩子 Re
  • 当目录存在时,htaccess 重定向无法重定向

    为了制作友好的 URL 以下是应用的 htaccess 代码 RewriteEngine On RewriteCond THE REQUEST php s NC RewriteRule F RewriteRule index php id1