使用.htaccess隐藏文件夹中的文件扩展名

时间:2018-05-30 17:24:40

标签: php .htaccess

我的网站就像这样组织:

  • 的index.php
  • products.php
  • 文件
    • file_manager.php
    • another_file.php

我想仅从root文件中删除扩展名。所以在这种情况下,index.php应该是索引,products.php应该是产品,但我不想触及文件夹中的文件扩展名。所以file_manager.php和another_file.php应该保留扩展名

此时我的代码是这样的:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*?)/?$ $1.php

但此代码会删除文件夹中的扩展名。

我该如何更改?

1 个答案:

答案 0 :(得分:1)

调整正则表达式以确保它仅影响根文件:

RewriteEngine on

RewriteCond %{THE_REQUEST} \s/+([^/]+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

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