【问题标题】:Treat more than one php file as directory, htaccess将多个 php 文件视为目录,htaccess
【发布时间】:2016-11-04 12:05:55
【问题描述】:

我是 htaccess 文件的新手,我了解如何对 URL 进行基本的重写,例如删除 index.php、扩展名等。我还可以使用 $_SERVER["PATH_INFO"] 处理任何尾随文件。

我纠结的是如何在除(未显示的)index.php 之外的另一个文件上使用尾随的虚假目录结构来做到这一点。假设我有

domain.com/render.php/this

我想让它阅读

domain.com/render/this

我目前的解决方法是在我的 index.php 文件中执行我的所有逻辑,但我想将它分成几个文件,这样我就可以让 index.php 做我的主页内容,而 render.php完全不同的东西。

感谢您的宝贵时间。

【问题讨论】:

  • 现在不能测试,而且我对 PI 也不是很熟悉,但是 RewriteRule ^([^./]+)/(.*)$ $1.php/$2 [L] 不做这项工作吗?您可能需要使用 DPI 标志。
  • 感谢您最终的支持+接受! +1 给你!

标签: php apache .htaccess mod-rewrite server


【解决方案1】:

这取决于您的整体目录结构。以Apache .htaccess to hide both .php and .html extentions 为例。

如果您已经将/render/this 配置为转到/render.php/this,而您所要做的就是以另一种方式执行重定向,那么试试这个:

RewriteEngine   On
RewriteCond %{REQUEST_URI}  \b\.php\b
RewriteRule ^([^/.])\.php/(.*)$ $1/$2   [R]

\b 部分匹配单词边界,根据 pcrepattern(3),它来自 pcre 库,Apache httpdnginx 都在支持中使用正则表达式。)

【讨论】:

  • 嘿,我认为我上面的正则表达式中有一个错字——([^/.]) 应该是([^/.]+)
猜你喜欢
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-11
相关资源
最近更新 更多