首页 > 解决方案 > .htaccess 重写 - 屏蔽动态 .php 扩展

问题描述

我知道之前就 .htaccess 提出过类似的问题,但是在阅读了问题、答案和评论数小时,以及无数小时阅读 .htaccess 文档,甚至尝试使用 .htaccess 生成器之后……并弄乱了我的网站通过尝试示例访问...我来寻求那些比我更聪明的指导。

我正在使用以下 .htaccess 文件从浏览器中向用户显示的 URL 中删除 .php 扩展名

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php

这完美工作
www.example.com/users/player.php?id=1正确显示为 www.example.com/users/player?id=1

我现在正在努力编写/查找/理解允许我重写完整扩展的示例

我想将
www.example.com/users/player.php?id=1
显示为
www.example.com/users/1
完全删除player.php?id=动态 URL 的一部分

提前感谢您的任何帮助/指导。

标签: php.htaccessdynamicurl-rewriting

解决方案


对于任何想做我想做的事情的人,我已经找到了解决方案。

问题:Htaccess 用 id 重写

答案:来自阿努巴瓦

这将允许您将“edit.php?id=1”从外部屏蔽为“edit/id/1”,并可以互换使用任一 URL。

RewriteEngine On
RewriteBase /

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/([^/]+)/edit\.php\?id=([^\s&]+) [NC]
RewriteRule ^ %1/edit/id/%2? [R=302,L,NE]

RewriteRule ^([^/]+)/edit/id/([^/.]+)$ $1/edit.php?id=$2 [NC,L,QSA]

祝你好运!


推荐阅读