如何删除 URL 中间的扩展名 .php

How to remove extension .php in the middle of URL

这是我的 URL: http://localhost/school-project/project1/mypage.php/home

我想删除 mypage.php 中的 .php。所以新的 URL 应该是这样的: http://localhost/school-project/project1/mypage/home

我曾尝试在 .htaccess 中使用 RewriteRule,但 none 成功了!

这是我的 .htaccess 中的代码:

(这个实际上去掉了.php,但它把页面转到找不到对象,错误404)

RewriteRule ^mypage.php/(.*)$ http://localhost/school-project/project1/mypage/[NC,L,R]

RewriteRule (.*)mypage/(.*)$ /mypage.php?/ [L]

我真的不知道问题出在哪里。有任何想法吗? 谢谢!

试试这个:

RewriteEngine on 
RewriteCond %{THE_REQUEST} \s/+(.*)\.php(.*)\sHTTP.*$ [NC]
RewriteRule ^ /%1%2 [R=302,L,NE]
RewriteCond %{REQUEST_URI} !\.php
RewriteRule ^([^\/]*)/([^\/]*)$ .php/ [L]

第二和第三行正在从外部删除 php 扩展。 第四和第五个在内部将请求重定向到原始路径。

清除浏览器缓存然后测试,如果可以将R=302更改为R=301以便永久重定向。

我找到了解决问题的另一种方法。非常感谢您的帮助!

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