将多个 php 文件视为目录,htaccess

Posted

技术标签:

【中文标题】将多个 php 文件视为目录,htaccess【英文标题】:Treat more than one php file as directory, 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 给你! 【参考方案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 都在支持中使用正则表达式。)

【讨论】:

嘿,我认为我上面的正则表达式中有一个错字——([^/.]) 应该是([^/.]+)

以上是关于将多个 php 文件视为目录,htaccess的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 bash 将哪些模式视为“隐藏”文件/目录

PHP 将多个文件/目录重命名为小写,删除空格和有趣的字符

如何将符号链接视为Mercurial中的目录?

创建目录并将多个文件上传到创建的目录PHP

git 将系统配置文件视为主目录而不是用户主文件夹(Windows 7)

php 将多个txt文件合并成