Mod_rewrite 隐形:当目标是文件时有效,而不是目录时有效

2023-12-01

我有这个重写规则,将 foo.com/test (或 foo.com/test/) 转换为 foo.com/test.txt:

RewriteRule ^test/?$ test.txt [NC,L]

它工作得很好,重要的是,永远不会向用户透露“真实”URL 是 foo.com/test.txt。

现在我想做同样的事情,其中​​“真实”URL 是 foo.com/testdir,其中 testdir 是一个目录:

RewriteRule ^test2/?$ testdir [NC,L]

它执行重写,但向用户显示重写。不是我想要的。

谁能解释一下 Apache 在这里的想法以及最佳解决方案?仅重写 testdir/index.php 对我来说不起作用,因为 index.php 中的代码没有正确的工作目录。 (它的运行方式就好像它是 foo.com/index.php,而 css 文件和其他文件位于 foo.com/testdir/ 中。)也许正确的解决方案是更改 index.php 的内容以引用 testdir/foo。 css 而不仅仅是 foo.css 但我很懒。另外,我宁愿重写规则不必知道它是index.php还是index.html还是what-have-you。

Addendum

感谢第一个答案,我现在看到了问题的本质:如果我希望用户使用 URL me.com/foo 并访问“真实”URL me.com/somedir,那么我必须在两个不需要的 URL 之间进行选择事物:

  1. URL 明显被重写(用户可以看到 me.com/somedir)。
  2. somedir 中的内容就像在根目录中一样运行。因此,例如,我必须更改 somedir/index.php 中的所有路径。就像“somedir/style.css”而不是像我直接访问“真实”URL me.com/somedir 时使用的“style.css”

我认为解决这个问题的唯一答案就是忍住并改变这些道路。或者只是将目录“somedir”重命名为“foo”,但由于其他原因我无法这样做。


添加尾部斜杠:

RewriteRule ^test2/?$ testdir/ [NC,L]

http://foo.com/testdir不是该目录的有效 url,Apache 会查找名为 testdir 的文件,并且由于 testdir 实际上是一个目录,Apache 会尝试通过重定向到 testdir/ 来修复它。因此,虽然您的重写有效,但随后的缺失斜杠错误已通过重定向到 testdir/ 来修复。

您可能还需要将基本 href 标签添加到文档的头部,否则相关链接将损坏:

<base href="/">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mod_rewrite 隐形:当目标是文件时有效,而不是目录时有效 的相关文章

  • URL 中的点 (.) 字符错误

    当我点击编辑具有此 url 的用户时遇到问题ASP NET MVC 3项目 http domain com 8089 User EditUser username surname IDUser e11a621p df11 4687 9903
  • 如何从图库中检索图像的 Picasa ID/URL

    我有一个活动 从设备的图库中检索图像并将其上传到服务 现在 出于优化目的 我希望避免上传 Picasa 上的图像 而只存储其 ID 或 URL 以供以后检索 所以我的问题是 如何检索该信息 我的意图代码粘贴在下面并检索图像的 URI Int
  • 无法在 Netbeans 9 中设置 apache tomcat

    我正在尝试在 Netbeans IDE 9 中设置 apache tomcat 我已尝试以下步骤 但无法设置 在 工具 gt 服务器 中 我单击 添加服务器 按钮 显示以下消息 因此 我尝试从 工具 gt 插件 安装插件 会显示一个对话框
  • 从 Laravel 的 URL 中删除 index.php

    我正在 Linux Mint 中使用 Laravel 5 5 12 我正在使用 LAMP 堆栈 我想删除index php来自网址 我的mod rewrite已启用阿帕奇模块 My htaccess文件位于public文件夹 它包含以下代码
  • 如何通过 .htaccess 删除 URL 中任何位置的空参数或参数?

    我的意思是空参数可以在 URL 中的任何位置 每次不同的位置 每次使用不同的名称 每次在不同的 php 页面上 例如 http www example com AnyPHPpageHere php parameter1 7 paramete
  • 如何从 URL 字符串中删除某些参数?

    我有这个var存储表示充满参数的 URL 的字符串 我正在使用 AngularJS 我不确定是否有任何有用的模块 或者可能使用纯 JavaScript 来删除不需要的 URL 参数而无需使用正则表达式 例如我需要删除 month 05并且
  • Web 应用程序中的 PathLocationStrategy 与 HashLocationStrategy

    使用的优点和缺点是什么 PathLocationStrategy 默认的 HTML 5 PushState 样式 HashLocationStrategy 哈希 URL 样式 例如 使用哈希位置策略将阻止通过 ID 滚动到元素的功能 但某些
  • 使用 .htaccess 启用 PHP 短标签

    我在自己的 Centos 服务器上设置了 Apache 并具有多个虚拟 Web 服务器 并且我希望仅为位于以下位置的其中一个 Web 服务器启用 PHP 短标记 var www ostickets html 我可以通过添加成功启用短标签sh
  • htaccess 301 重定向 - 删除查询字符串 (QSA)

    我一直在努力处理一些 htaccess 重定向 我只是花了一些时间在堆栈上阅读和搜索 但无法获得适合我的场景的答案 我正在将旧客户端网站的 301 重定向到新客户端 旧页面有参数查询 我想从网址中删除它 menu php idCategor
  • 如何向 URL 添加查询参数?

    在 Tritium Moovweb SDK 中向 URL 添加查询参数的最佳实践是什么 寻找一些在您不知道 URL 是否包含 的情况下有效的方法 和其他查询参数已经 下面是 Tritium 的一个简短片段 应该可以帮助您完成 Moovweb
  • Django NoReverseMatch

    我有以下设置 landing pages views py urls py In urls py当我尝试访问时 我有以下内容 competition from django conf urls defaults import from dj
  • 项目链接在 Wamp 服务器上不起作用

    我正在另一台计算机上安装 Wamp 服务器来运行中型数据库和 UI 我已成功阻止 IIS 并将服务器路由到 Localhost 8080 但是每当我尝试从 localhost 主页访问我的项目时 在 www 文件中 我被重定向到页面未找到错
  • 如何配置 mod_proxy 以阻止除一个网站之外的所有网站

    我正在尝试设置 mod 代理来阻止除特定域之外的所有流量 我可以将其配置为使用 ProxyBlock 指令阻止各个域 并且可以使用 ProxyBlock 阻止所有内容 有没有一种方法可以阻止除一个域之外的所有域 Thanks Andrew
  • Apache mod_rewrite 将子域重写到子文件夹(通过内部重定向)

    我正在尝试编写一组 mod rewrite 规则 允许我的用户利用单个文件夹在不同项目上进行开发 而不必为每个项目添加虚拟主机 我的想法是为每个需要此功能的用户 仅 3 4 个 设置一个 全局虚拟主机 该虚拟主机类似于 my domain
  • 并行读取 Flume spoolDir

    由于我不允许在产品服务器上设置 Flume 因此我必须下载日志 将它们放入 Flume spoolDir 中 并有一个接收器从通道中使用并写入 Cassandra 一切正常 但是 由于 spoolDir 中有很多日志文件 并且当前设置一次仅
  • FPM 与 apache2 无法工作(权限被拒绝)

    我正在尝试使用 apache fastcgi 和 fpm 设置一个 Debian Web 服务器 但我越来越恼火 一旦我停用 mod php 我就会收到以下错误 2014 年 5 月 22 日星期四 12 16 10 错误 客户端 xxx
  • 如何将路径添加到 Apache PATH 变量?

    我在 apache2 的 custom conf 文件中设置了以下内容 SetEnv PATH PATH opt local lib mysql5 bin this is a test 但是它不起作用 当我打电话时 hey shell ex
  • 如何在不改变相对路径的情况下使用apache的mod_rewrite重写规则

    我在 htaccess 中有以下重写规则 RewriteRule groups groupdetail php gname 1 L NC 这需要类似 www example com groups groupname 的内容并调用 www e
  • Google App Store 警告 - 您应该尽快升级到 Apache Cordova 3.5.1 或更高版本

    我收到了一封来自 Google Play 商店的关于我的 Android 应用程序的电子邮件 这是一个通知 表明您的 com mydomain myapp 是基于 包含安全漏洞的 Apache Cordova 版本 这 包括高严重性跨应用程
  • 在 Apache 上设置虚拟主机(XAMPP、Windows 10)

    我尝试使用 XAMPP 为某些本地站点设置虚拟主机 我执行了后续步骤 在 C xampp apache conf extra httpd vhosts conf 中我添加了

随机推荐

  • IDisposable.Dispose 在 using 块中发生异常后永远不会被调用

    我从很多来源了解到this and this那Dispose的方法IDisposable如果在 a 中抛出异常 则始终会被调用Using堵塞 那么我有这个代码 static class MainEntryPoint static void
  • 打开lucene索引时出错:Map failed

    我尝试使用 1 2 3 4 GB 内存启动该进程 但仍然出现相同的错误 有小费吗 gc 日志显示它正在运行 GC 即使它有足够的内存 但这个错误可能与使用 NIO 的内存映射文件有关 有人见过这样的事情吗 如果是这样 你是如何解决的 jav
  • 如何修复 Qt 5.6 beta 和 VS2015 的 QT VS Add-in?

    我没有自己编译 Qt 而是使用 Qt 官方网站的安装程序 5 6 beta 几天前就可用了 安装成功 Qt 文件夹包含 bin 文件夹 其中包含 qmake 和所有内容 在 Qt Creator 中构建应用程序是可行的 但是 当我尝试使用
  • 如何在 PyTorch 中使用 2 张图像作为训练样本?

    I just begin learning deep learning and my first homework is to finish an leaves classification system based on convolut
  • 如何在一个活动中使用java类?

    如何在一个活动中使用 Java 类 我的意思是将该活动的不同组件分布在一堆 Java 类中 我对 Android 有点陌生 这是我迄今为止尝试过的 MainActivity java package com example alex mya
  • 使用图形 API 发布到 Facebook 用户的留言墙上

    我是 facebook 应用程序开发的新手 我正在尝试使用以下命令在用户墙上发布简单的文本但这似乎不起作用 有什么想法我可能会出错吗 检查您是否有权从应用程序发帖 将 app id 添加到您的通话中
  • 记住带有 localstorage onclick 的复选框

    我正在尝试为 Chrome 扩展程序创建一个选项页面 第一部分将值设置到本地存储中 检查 true 并取消选中 false 如果用户在其他时间回来 第二部分应该更新复选框 并且设置将应用于该复选框 我的问题是 当用户刷新或关闭窗口并返回时
  • Resharper string.format 快捷方式

    我经常发现自己在写作 var message Hello 0 然后返回并输入 var message string Format Hello 0 world 如果当我输入字符串时 当我将 放在末尾时 resharper 发现字符串中有一个参
  • 如何在android中按下后退时关闭我的应用程序

    我想在按下设备的后退按钮时进入主屏幕 我正在使用此代码 public void onBackPressed this finish return 按BACK键将有效调用finish 为你 无需捕获 BACK 键 我假设您的问题是 当您按 B
  • android相机导致空指针异常

    我的应用程序在尝试使用相机拍照时出现空指针异常 我的应用程序这样调用相机 go to camera app Intent intent new Intent android media action IMAGE CAPTURE intent
  • 从retrofit2获取字符串响应体

    我正在使用 Retrofit1 旧样式 GET loginUser public Call
  • 跟随手指的旋转动画,遵循圆的外部路径的 uibuttons

    我正在寻找一些指导来开始弄清楚跟踪手指运动并沿着圆的外部路径移动 UIButton 集合的动画 我想象它会有一种左轮手枪的感觉 就像每个都在底部锁定到位一样 或者像滑动其中一个幻灯片插件一样 提前致谢 示例代码在GitHub 其实并不是那么
  • Google 语音短信意图

    现在我正在尝试使用填充的号码创建短信意图 Intent sendIntent new Intent Intent ACTION VIEW sendIntent setFlags Intent FLAG ACTIVITY NEW TASK s
  • 改变方向时闪光灯关闭

    我创建了一个 Android 应用程序 它允许用户通过按下按钮来打开和关闭闪光灯 如果用户打开闪光灯并改变方向 灯就会关闭 为什么会发生这种情况 请参阅下面我使用的代码 cam Camera open final Parameters p
  • VimTutor 方向键 v/s hjkl

    VimTutor 在第一课中说道 注意 光标键也应该起作用 但是使用 hjkl 你会 能够 一旦习惯了 移动速度就会更快 真的吗 然而 我发现它们之间没有任何区别 使用 hjkl 和箭头键之间真的有区别吗 使用 hjkl 时 您不必将手从触
  • springSecurityFilterChain 空指针异常

    当我尝试运行项目时 Tomcat 返回异常 有人可以帮助解决这个问题吗 配置类 https github com intrade inventory blob master src main java com springapp mvc I
  • 通过单击没有输入字段的图像来打开 JQuery Datepicker

    我想在用户单击图像时打开 JQuery Datepicker 没有随后出现所选日期的输入字段 我将通过 Ajax 将输入的日期保存到服务器 目前我有这个代码 img src someimage gif document ready func
  • 我应该为 User 类的唯一实例使用哪种模式?

    我有这个用户类 class User private logged false private id public function User gt Check if the user is logged in with a cookie
  • 获取 ember 中的操作目标元素

    如何获取触发单击事件的目标元素的对象 例如 如果我有一个类似的模板 table tr th Type th tr table 在我的控制器中 我定义了相应的操作 如下所示 action someAction function get the
  • Mod_rewrite 隐形:当目标是文件时有效,而不是目录时有效

    我有这个重写规则 将 foo com test 或 foo com test 转换为 foo com test txt RewriteRule test test txt NC L 它工作得很好 重要的是 永远不会向用户透露 真实 URL