【问题标题】:Using virtual directory in url in htaccess file在 htaccess 文件的 url 中使用虚拟目录
【发布时间】:2019-02-13 16:20:31
【问题描述】:

我们正在尝试在特定 url 之后添加虚拟文件夹。当用户到达虚拟文件夹时,它应该显示索引页面而不是 404 错误。

我们尝试在 .htaccess 文件中使用重写规则,但它仍然显示 404 错误。

RewriteEngine On
RewriteRule ^p/(.*)$ index.php?/$1 [R=301,L]

在url地址栏中,当用户键入例如: https://ecitizen.in/p/002。 '002' 是一个虚拟目录。它应该加载https://ecitizen.in/p/index.php 的索引页面,而无需实际重定向或更改输入的实际 url。现在当我们输入这个 url:https://ecitizen.in/p/002 上面的代码时,它显示 404 not found 错误

【问题讨论】:

  • “没有实际重定向或更改输入的实际 url” - 从标志中删除 R=301,这会使重定向成为 HTTP 301。
  • 这个.htaccess 文件是在p 目录还是在文档根目录?如果它在 p 目录中,您需要从匹配中删除它,如果它在 docroot 中,您需要在 index.php 之前添加 /p/ - 例如:htaccess.madewithlove.be?share=1521a193-1ebf-5ba3-998e-5155ae3b…

标签: php apache .htaccess


【解决方案1】:

答案取决于此 .htaccess 文件是位于文档根目录还是位于该 /p 目录中 - 无论哪种方式,您都需要删除 R=301 标志(这就是使其成为 HTTP 301 重定向)。


如果 .htaccess 文件是 docroot

您需要将/p 目录映射到重写中。

RewriteRule ^p/(.*)/?$ /p/index.php?/$1 [L]


如果 .htaccess 文件在 /p 目录中

您需要从匹配项中删除 /p 目录。

RewriteRule ^(.*)/?$ index.php?/$1 [L]

【讨论】:

  • 谢谢。它可以工作,但是当我在页面中回显 PHP_SELF 时,它已经排除了“虚拟目录”。我的要求也是回显虚拟目录
  • 谢谢。解决。我使用了 $_SERVER ['REQUEST_URI']。有效。我认为你的答案是正确的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-11
  • 2012-05-07
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 2011-01-17
相关资源
最近更新 更多