我有两段删除.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)
答案 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]