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

时间:2017-12-22 20:43:57

标签: php apache .htaccess mod-rewrite

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

  1. 的index.php
  2. page1.php中
  3. page3.php
  4. 夹/ index.php的
  5. 实例/ index.php的
  6. page4.php
  7. 我想仅从不在子目录中的网址中删除.php文件扩展名。因为如果我从所有URL中删除.php,如下所示:

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

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

    所以我想知道以下内容:

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

1 个答案:

答案 0 :(得分:0)

如果您只想将.php扩展名添加到网站根目录中的文件,请使用:

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

此处否定的字符类[^/.]+将仅匹配当前目录中的文件,因为它匹配的一个或多个字符不是/.

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

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