一些没有.php扩展名的页面Mod_rewrite

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些没有.php扩展名的页面Mod_rewrite相关的知识,希望对你有一定的参考价值。

所以我有这个网站,它有一个像这样的目录结构:

  1. 的index.php
  2. page1.php中
  3. page3.php
  4. 文件夹/的index.php
  5. 例如/ index.php的
  6. page4.php

我想仅从不在子目录中的URL中删除.php文件扩展名。因为如果我从所有URL中删除.php,如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L] 

子目录中的文件以前可通过此URL访问:https://example.com/folder现在提供404,除非我在其末尾输入index.php或文件名。

所以我想知道以下内容:

  • 如何从仅选择的几个目标文件中删除.php,以便文件夹/子目录中的文件不受影响?
  • 如何更改上述.htaccess代码,使其不针对文件夹/子目录中的文件?
答案

如果要将.php扩展名仅添加到站点根目录中的文件,请使用:

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^/.]+)/?$ $1.php [L]

这里否定字符类[^/.]+将只匹配当前目录中的文件,因为它匹配1个或多个不是/.的字符

但是,如果要将.php正确添加到所有文件,请使用以下规则:

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

以上是关于一些没有.php扩展名的页面Mod_rewrite的主要内容,如果未能解决你的问题,请参考以下文章

在不使用 mod_rewrite 的情况下运行没有扩展的 PHP?

mod_rewrite 删除 .php 扩展名并保留 GET 参数

在 url mod_rewrite 中隐藏扩展名 .php

php Zend / MVC 没有 mod_rewrite

使用 mod_rewrite RewriteRule 重写所有查询以不需要 .php 扩展名

httpd.conf mod_rewrite HTTPS 并删除 PHP 扩展