【问题标题】:Some Pages without .php extension Mod Rewrite一些没有 .php 扩展名的页面 Mod Rewrite
【发布时间】:2017-12-22 20:43:56
【问题描述】:

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

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

我只想从不在子目录中的 URL 中删除 .php 文件扩展名。因为如果我像这样从所有 URLS 中删除 .php:

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

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

所以我想知道以下内容:

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

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      最近更新 更多