Php 如何在URL中间删除扩展名

Php 如何在URL中间删除扩展名,php,apache,.htaccess,mod-rewrite,xampp,Php,Apache,.htaccess,Mod Rewrite,Xampp,这是我的网址: 我想去掉mypage.php中的.php。因此,新URL应如下所示: 我曾尝试在.htaccess中使用RewriteRule,但都没有成功 以下是my.htaccess中的代码: (这一个实际上去掉了.php,但它将页面转到了未找到的对象,错误404) 或 我真的不知道问题出在哪里。有什么想法吗? 谢谢 试试这个: RewriteEngine on RewriteCond %{THE_REQUEST} \s/+(.*)\.php(.*)\sHTTP.*$ [NC] Rew

这是我的网址:

我想去掉mypage.php中的.php。因此,新URL应如下所示:

我曾尝试在.htaccess中使用RewriteRule,但都没有成功

以下是my.htaccess中的代码:

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

我真的不知道问题出在哪里。有什么想法吗? 谢谢

试试这个:

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
,以实现永久重定向。

尝试以下操作:

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
,以便永久重定向。

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

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

我为我的问题找到了另一个解决办法。非常感谢你的帮助

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

可能是重复的谢谢你的评论,看起来很相似,但我已经调查过了,他的问题有点不同。PHP扩展是在结尾,而不是在中间。参见:“有什么想法吗?”→ 多视图+路径信息应该足够了。否则重写日志。或者看看所有类似的问题。在几十份每日回复中隐藏着一些更有用的解释。可能是重复的感谢评论,看起来很相似,但我已经调查过了,他的问题有点不同。PHP扩展是在结尾,而不是在中间。参见:“有什么想法吗?”→ 多视图+路径信息应该足够了。否则重写日志。或者看看所有类似的问题。在几十篇每日报道中隐藏着一些更有用的解释。你能给我解释一下这部分吗?\s/+(.*)\.php(.*)\sHTTP.*$和^([^\/]*)/([^\/]*)$$1.php/$2,非常感谢!浏览器发送到服务器的完整HTTP请求行(例如,“GET/index.html HTTP/1.1”)。这不包括浏览器发送的任何附加标题。与下面的大多数其他变量不同,此值未被取消扫描(解码)。此处的更多信息请向我解释\s/+(.*)php(.*)sHTTP.*$和^([^\/]*)/([^\/]*)$$1.php/$2,非常感谢!浏览器发送到服务器的完整HTTP请求行(例如,“GET/index.html HTTP/1.1”)。这不包括浏览器发送的任何附加标题。与下面大多数其他变量不同,此值未被取消扫描(解码)。更多信息请参见此处