【问题标题】:htaccess/rewriterule and virtual folderhtaccess/rewriterule 和虚拟文件夹
【发布时间】:2013-02-28 00:12:06
【问题描述】:

过去我曾通过 Google 使用过该网站几次,并找到了解决问题的有用帮助。现在我想问我自己的问题并因此注册。所以,“大家好!”

我的“问题”涉及 htaccess-rewriterule 和 PHP/HTML。 假设我有一个 URL“http://www.mydomain.com/showdata.php?ID=9”,我想重写为“http://www.mydomain.com/person/firstname-lastname-9.php”。我的计划是“人”只是一个虚拟目录。 重写部分没问题:

RewriteRule ^person/(.*)-(\d+)\.php$ /showdata.php?ID=$2

新 URL 指向 MySQL 数据库中的正确条目。问题是 CSS 文件没有被加载,并且导航中的所有链接都指向“person”文件夹。 我以为我可以“链接”到一个虚拟文件夹,因为 htaccess 会将浏览器引导到服务器上的真实文件。我实际上可以创建文件夹“person”并在其中复制包含文件,但这意味着我必须在源代码中更改很多路径。这是很多凌乱的工作,我宁愿避免这样做。 有没有办法拥有一个虚拟文件夹(用于关键字),但仍然让 php 脚本包含主文件夹中的文件?

【问题讨论】:

  • 为什么不直接重写为showdata.php?所以用户看到http://www.mydomain.com/person/firstname-lastname-9,但服务器看到http://www.mydomain.com/showdata.php?ID=9
  • 你在找<base href=..>
  • 我有带有锚链接的页面,但我读到 不能很好地使用锚。
  • 好的,我做了一个妥协:我使用了 标签并移除了 3 个锚点。

标签: php .htaccess mod-rewrite


【解决方案1】:

为 css、js 和图像添加更多规则..

我假设您的 css/js/images 位于名称为 "css" 、 "js" 、 "images" 的文件夹中

例如

RewriteRule (.*)/(images|css|js)/(.*) /$1/$2 [L]
# | means OR  , [L] means last rule i.e. do not continue to process other rules after this.

【讨论】:

  • RewriteCond 在这种情况下可能更容易。
猜你喜欢
  • 2012-11-22
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 2020-03-16
相关资源
最近更新 更多