php - .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 的一部分
提前感谢您的任何帮助/指导。
解决方案
对于任何想做我想做的事情的人,我已经找到了解决方案。
答案:来自阿努巴瓦
这将允许您将“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]
祝你好运!
推荐阅读
- angular - 在两个活动组件之间共享单个 API 调用的 Angular 最佳实践
- oracle-apex - Oracle Apex - 如果更改一页,应用程序的用户是否必须再次登录?
- node.js - Puppeteer 错误找不到选择器的节点(按钮单击)
- php - 将桌子与 foreach 并排放置
- mysql - 如何查询工作中有字母(例如K)且薪水大于某个数字的姓名
- python - 我怎样才能总结一天的时间戳?
- javascript - 如何将源转换为我的资产 img ?角
- angular - 删除查询参数后如何防止滚动到顶部?
- wiki - 如何在 cytoscape 中打开 wikipathway(作为通路)?
- javascript - 如何在render()reactjs中定义useState变量