【问题标题】:Mod Rewrite to a non existent directoryMod重写到不存在的目录
【发布时间】:2013-06-15 10:18:47
【问题描述】:

我的问题是,如果我用以下规则重写我的 URL

RewriteCond %{QUERY_STRING} ^site=meine-bar&filter=([a-zA-Z]+)$
RewriteRule ^meine-bar/([a-zA-Z]+)$ index.php?site=meine-bar&filter=$1 [L]

我的 index.php 也能识别新的 URL,但我的依赖项是错误的。

例如。

通常链接是例如

<link href="css/style.css" ... />

现在我已经重写了 URL,index.php 会在 meine-bar/css/style.css 中查找链接

如何告诉 Mod Rewrite 只是“虚拟地”将我重定向到这个不存在的文件夹?我不想在文件夹中(因为它不存在),我只是不想让用户相信这个文件夹存在(URL 必须看起来像它存在)

【问题讨论】:

  • 我看到的唯一解决方案(不是在 Mod_Rewrite 端)是检查 PHP 中的 REQUEST 字符串,如果它包含 ../meine-bar/.. 来准备一个“../”到每个链接。通过这种方式,它会纠正每个链接,但这似乎不是一个非常干净的解决方案。
  • 您希望您的网址是什么样的?就像用户将看到的那样?然后它也应该重写的确切 URL 是什么。我知道你有一个例子,但它让我更清楚地看到你想要完成什么。
  • 我的 index.php?site=meine-bar 被重写为 /meine-bar index.php?site=meine-bar&filter=sirup 应该被重写为 meine-bar/sirup 并且它可以工作,但是如重定向后的问题中所述,所有链接也都使用新 URL,但实际上我只想显示 meine-bar/...,但 meine-bar 不是真正的文件夹。你明白我的意思吗?
  • 好的回答了。让我知道这是否适合你
  • 对不起,那我想我不明白你的意思。因为我的回答清楚地解决了您描述的问题,并且我举例说明了我的大多数网站都是这样的(不存在的文件夹)。

标签: php regex apache url mod-rewrite


【解决方案1】:

改变这个

<link href="css/style.css" ... />

到这里

<link href="/css/style.css" ... />

我相信如果没有 meine-bar,它仍然可以按您的需要工作

原因是您正在使用relative 路径,因此它会选择URL“认为”它所在的目录。为防止您需要使用absolute 路径。因此,通过将 / 放在目录前面,您可以告诉它从您真正想要的 webroot 开始。希望这是有道理的。

【讨论】:

  • 我的网站使用了不存在的文件夹。例如。 mysite.com/groups/groupname 目录组不存在并且是一个modrewite。如果我链接到页面上的某些内容,例如 Item,则链接显示为 mysite.com/groups/menuitem.html,这是错误的。然而,为了解决这个问题,我将链接更改为 Item 并且链接显示为 mysite.com/menuitem.html。所以它确实适用于我认为你有的场景
  • 问题是,每个页面都包含依赖于 index.php?site 参数。因此,如果我将其更改为 /css/style.css ,则每种情况都是错误的,除非它是 meine-bar/... (我的 css 文件中的路径也是错误的,不仅是链接本身)如果每个页面都可以使用将独立于 index.php
  • 是的,但我不明白为什么它仍然不适用于您的其他页面。无论您使用 index.php 提供什么服务。 style.css 将并且应该始终位于yoursite.com/css/style.css 对吗?你的样式表永远不会改变它的位置,所以无论如何使用这个 /css/style.css 应该可以工作。如果不是,我将不得不查看更多设置 index.php 的方式。我看不出那是怎么回事。我不在我网站上的任何地方使用相对路径来防止此类问题。使用完整的 URL 或 /。这是同一件事。
  • 使用完整的 URL 修复了它。感谢您的提示! :)
猜你喜欢
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多