【问题标题】:How to remove extension .php in the middle of URL如何删除 URL 中间的扩展名 .php
【发布时间】:2019-07-06 07:02:24
【问题描述】:

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

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

我曾尝试在 .htaccess 中使用 RewriteRule,但都没有奏效!

这是我的 .htaccess 中的代码:

(这个其实去掉了.php,但是把页面转到了Object not found,error 404)

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

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

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

【问题讨论】:

标签: php apache .htaccess mod-rewrite xampp


【解决方案1】:

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

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

【讨论】:

    【解决方案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以便永久重定向。

    【讨论】:

    • 你能解释一下这部分 \s/+(.*)\.php(.*)\sHTTP.*$ 和 ^([^\/]*)/([^\/ ]*)$1.php/$2 给我,非常感谢!
    • 浏览器向服务器发送的完整 HTTP 请求行(例如,“GET /index.html HTTP/1.1”)。这不包括浏览器发送的任何附加标头。与下面的大多数其他变量不同,此值尚未被转义(解码)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多