首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用mod_rewrite重定向漂亮url以获取vars,并保留查询字符串

使用mod_rewrite重定向漂亮url以获取vars,并保留查询字符串
EN

Stack Overflow用户
提问于 2016-12-10 08:57:01
回答 1查看 193关注 0票数 0

情境:我有一个基于文件目录的网站,它带有老式的URL,我正试图将它转换成一个不需要太多文件和目录的系统。

因此,这样的一个URL是:www.mysite.org/members/support/new员/

当前返回以下文件: www.mysite.org/members/support/newmember/index.php

这是可行的,但需要太多的目录和索引文件。

在为一个工作太多的朋友开发另一个站点时,我从他那里得到了一个脚本,它使用mod_rewrite将一个老式的_GET[]解析成$_GET[]变量。使用此.htaccess脚本:

代码语言:javascript
运行
AI代码解释
复制
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([A-Z­a-0-9­-]+)/?$ index.php?folder=$1 [L]
RewriteRule ^([A-Z­a-0-9­-]+)/([A-Z­a-0-9­-]+)/?$ index.php?folder=$1&page=$2 [L]
RewriteRule ^([A-Z­a-0-9­-]+)/([A-Z­a-0-9­-]+)/([A-Z­a-0-9­-]+)?$ index.php?folder=$1&page=$2&subPage=$3 [L]

还有一个老式的URL,如:www.mysite.org/members/support/new员

根目录中的索引文件有以下vars可用:$_GET‘文件夹’$_GET‘’page‘$_GET’‘subPage’

索引文件中的脚本根据$_GET变量简单地组装正确的包含,从而消除了对这样一个广泛的文件结构的需求。

问题: PHP脚本不再可以使用查询字符串。Mod_rewrite吞食了它们,只吐出了在.htaccess中的规则中定义的GET vars。对于所有内部站点链接来说,这都是可以的,因为我可以放弃查询字符串,使用我的URL vars或会话vars来使我的页面可用的值。但遗留下来的棘手问题是,我的站点将人发送到PayPal,而我的脚本依赖于?PayPal发送回我的站点的查询字符串。PayPal将用户发回如下内容:

www.mysite.org/support/members/newmemberconfirmation?id=1234567

并且,即使它出现在浏览器的URL窗格中,该id值对脚本也不可用。

想要的解决方案:我不知道如何为mod重写编写脚本;我甚至不能非常自信地做一个正则表达式。我需要的是一个脚本,在URL中的斜杠之间分配值以获得vars,但也会使我的PHP脚本可以使用原始的GET vars。有谁能帮我做这件事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-10 10:02:44

更改3标志[L]并使用[L,QSA]

代码语言:javascript
运行
AI代码解释
复制
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([A-Z­a-0-9­-]+)/?$ index.php?folder=$1 [L,QSA]
RewriteRule ^([A-Z­a-0-9­-]+)/([A-Z­a-0-9­-]+)/?$ index.php?folder=$1&page=$2 [L,QSA]
RewriteRule ^([A-Z­a-0-9­-]+)/([A-Z­a-0-9­-]+)/([A-Z­a-0-9­-]+)?$ index.php?folder=$1&page=$2&subPage=$3 [L,QSA]

QSA_qsappend 当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用QSA标志会使查询字符串组合起来。

qsa

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41077972

复制
相关文章
python 重定向获取真实url
楼主在做公司项目的时候遇到url重定向的问题,因此上网简单查找,作出如下结果 由于使用的是语言是python所以以下是python的简单解决方案 http_headers = { 'Accept': '*/*','Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safar
py3study
2020/01/07
2.4K0
如何在Debian 9上使用mod_rewrite为Apache重写URL
Apache的mod_rewrite模块允许您以更干净的方式重写URL,将人类可读的路径转换为代码友好的查询字符串。它还允许您根据条件重写URL。
楠宝宝
2018/11/15
5.1K0
php – cURL从重定向获取url
我目前正在使用cURL尝试从网站刮刀的重定向获取URL.我只需要网站上的网址.我在过去几天研究过stackoverflow和其他网站,但都没有成功.我目前使用的代码来自这个网站:
全栈程序员站长
2022/07/11
2.1K0
如何在Ubuntu 14.04上为Apache设置mod_rewrite
在本教程中,我们将激活并学习如何使用Apache2 mod_rewrite模块管理URL重写。这个工具允许我们以更干净的方式重写URL,将人类可读的路径转换为代码友好的查询字符串。
无敌小笼包
2018/10/19
2.5K0
如何在Ubuntu 18.04上使用mod_rewrite for Apache重写URL
Apache的mod_rewrite模块允许您以更干净的方式重写URL,将人类可读的路径转换为代码友好的查询字符串。它还允许您根据条件重写URL。
水门
2018/10/19
4.5K0
js 获取 url 查询参数
例如: http://30.7.212.45:3000/#/?id=100 获取 id 的值的 js 代码如下: var id; var href = window
一个会写诗的程序员
2018/08/17
18.7K0
使用FastAPI进行URL重定向
第一种方法,是直接返回一个RedirectResponse对象,默认的HTTP码是307:
SeanCheney
2023/01/10
5.6K0
使用FastAPI进行URL重定向
Apache的URL地址重写(RewriteCond与RewriteRule)
大家好,又见面了,我是你们的朋友全栈君。Apache的URL地址重写 http://hi.baidu.com/sonan/blog/item/c408963d89468208bba16716.html 第一种方法:Apache环境中如果要将URL地址重写,正则表达式是最基本的要求,但对于一般的URL地址来说,基本的匹配就能实现我们大部分要求,因此除非 是非常特殊的URL地址,但这不是我要讨论的范围,简单几招学会Apache中URL地址重写,通过实例展示,轻松学会URL地址重写: URL实例
全栈程序员站长
2022/06/30
2.5K0
js从 URL 获取查询参数
从 URL 获取查询参数 <script> function getParameterByName(name, url) { if (!url) url
江一铭
2022/06/16
10.7K0
如何在Debian 8上使用mod_rewrite为Apache重写URL
在本教程中,我们将激活并学习如何使用Apache 2的mod_rewrite块管理URL重写。该模块允许我们以更干净利落的方式重写URL,将人们可读的路径转换为代码友好的查询字符串或根据其他条件重定向URL。
陈树丶
2018/08/09
4.4K0
如何在CentOS 7上为Apache设置mod_rewrite
Apache是一个模块化Web服务器,允许您通过启用和禁用模块来自定义其功能。这使管理员能够定制Apache的功能以满足其Web应用程序的需求。
SQL GM
2018/10/19
5.6K0
Apache URL重定向
Apached的重写功能,即是mod_rewrite模块功能,它是apache的一个模块。它的功能非常强大,可以操作URL中的所有部分。通过改写url,给用户提供一个简介大方的url,当用户访问时可以通过mod_rewrite模块功能转换为真正的资源路径。通过mod_rewrite能实现的功能还有很多,例如隐藏真实地址、实现URL跳转、域名跳转、防盗链、限制访问资源类型等等。
星哥玩云
2022/09/15
5.6K0
使用 js 准确获取当前页面 url 网址信息及 301 重定向实战
传送门 在 WEB 开发中,时常会用到 javascript 来获取当前页面的 url 网址信息,在这里是我的一些获取 url 信息的小总结。
Cell
2022/02/25
3.4K0
Apache mod_rewrite实现HTTP和HTTPS重定向跳转
当你的站点使用了HTTPS之后,你可能会想把所有的HTTP请求(即端口80的请求),全部都重定向至HTTPS(即端口443)。这时候你可以用以下的方式来做到:(Apache mod_rewrite)
用户8965210
2021/10/14
1.4K0
WordPress 查询参数(WordPress Query Vars)完全列表
WordPress 查询参数分公开(Public)和私用(Private),公开就是可以博客链接加入参数就可以查询数据,而私有只能在代码中通过参数传递 WP_Query class。
Denis
2023/04/13
5460
go :gin URL重定向
本文介绍gin 框架下,URL重定向问题http重定向r.GET("/test", func(c *gin.Context) { c.Redirect(http.StatusMovedPermanently, "http://www.qq.com/")})完整测试代码package mainimport ( "net/http" "github.com/gin-gonic/gin")func main() { r := gin.Default() // Serves unico
IT工作者
2022/07/22
1.8K0
Apache中 RewriteRule 规则参数介绍
大家好,又见面了,我是你们的朋友全栈君。Apache中 RewriteRule 规则参数介绍
全栈程序员站长
2022/08/27
12.1K0
漏洞挖掘 - Url重定向
URL重定向的定义是指把一个目录或文件的访问请求转发到另一个目录或文件上,当用户发出相应的访问请求的时候,网页能跳转到指定的位置。
Khan安全团队
2021/08/26
4.3K0
漏洞挖掘 - Url重定向
Apache 的 ReWrite 的应用
Apache的mod_rewrite是提供了强大URL操作的杀手级 的模块,可以实现几乎所有你梦想的URL操作类型,其代价是你必须接受其复杂性,因为mod_rewrite的主要障碍就是初学者不容易理解和运用,即使 是Apache专家有时也会发掘出mod_rewrite的新用途。 换句话说:对mod_rewrite,或者是打退堂鼓永不再用,或者是喜欢它并一生受用。 ReWrite可以应用在以下方面或者解决以下问题: URL的规划 规范的URL 说明: 在有些网站服务器上,一个资源会拥有多个URL,在实
wangxl
2018/03/07
1.5K0
Apache rewrite Url
本文主要介绍Apache环境下,如何使用mod_rewrite模块完成URL重写功能。
黄啊码
2020/05/31
1.8K0

相似问题

如何mod_rewrite并保留查询字符串?

10

用mod_rewrite重写和重定向漂亮URL

12

用HAProxy重定向URL路径并保留查询字符串

10

使用查询字符串重定向URL的mod_rewrite

24

带有url编码的查询字符串的漂亮url的mod_rewrite

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档