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

时间:2019-02-12 15:21:08

标签: php apache .htaccess mod-rewrite xampp

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

我想摆脱mypage.php中的.php。因此,新网址应如下所示: http://localhost/school-project/project1/mypage/home

我试图在.htaccess中使用RewriteRule,但是它们都不起作用!

这是我的.htaccess文件中的代码:

(这实际上摆脱了.php,但将页面转到了“找不到对象,错误404”)

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

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

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

2 个答案:

答案 0 :(得分:2)

尝试一下:

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

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

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

答案 1 :(得分:0)

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

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