我的网站就像这样组织:
我想仅从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
但此代码会删除文件夹中的扩展名。
我该如何更改?
答案 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]