删除.php扩展名

时间:2017-04-29 03:30:35

标签: php apache .htaccess redirect directory

我有两段删除.php扩展名的代码。

解决方案1:

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

解决方案2:

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

directory是一个目录

page是一个页面

解决方案1的问题:

如果你去domain.com/directory,它应该显示domain.com/directory/index.php但是index.php没有出现,它只显示404错误页面。

解决方案2的问题:

如果你访问domain.com/directory/page/haha-lol-blah-blah,页面domain.com/directory/page会显示,无论页面后面是什么。

是否有解决这两个问题的方法?

这就是我需要的:

domain.com/directory -> shows the page: domain.com/directory/index.php
domain.com/directory/page -> shows the page: domain.com/directory/page.php
domain.com/directory/page/haha-lol-blah-blah -> invalid page (404)

2 个答案:

答案 0 :(得分:0)

我相信现在这个代码正在运行:

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

答案 1 :(得分:0)

尝试这样,

#incoming request neither a file nor a directory
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)$ $1.php [L]