regex - htaccess 用问号完整 url 重写
问题描述
大家好,我想传递用 get.php 编写的所有内容?url = 参数(包括问号和特殊字符)。我有 get.php 文件的文件内容:
$url = $_GET['url'];
print($url);
.htaccess 文件:
RewriteEngine On
RewriteBase /
RewriteRule ^get/(.*)/?$ /get.php?url=$1 [L]
当我这样做时,我可以达到问号。示例:http ://example.com/get/http://example.com?id=1&ad=mahmut
我得到了这个结果:http ://example.com
我怎么解决这个问题?我在网站上尝试了很多示例,但都失败了。
解决方案
诀窍是不要使用RewriteRule
,因为您之前只会获得 URI 部分?
。
您应该为此使用RewriteCond
with变量:THE_REQUEST
Options -MultiViews
RewriteEngine On
RewriteCond %{QUERY_STRING} !(^|&)url= [NC]
RewriteCond %{THE_REQUEST} \s/+get/(\S*)\s [NC]
RewriteRule ^ get.php?url=%1 [L,QSA]
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行其他重写指令后它不会被覆盖。此变量的示例值为GET /index.php?id=123 HTTP/1.1
推荐阅读
- c - 将值分配给结构数组时,进程返回 -1073741819 (0xC0000005)
- google-cloud-platform - GCP使用现有静态IP创建负载平衡器服务不显示外部IP
- parsing - 尝试修复 MediaWiki 模板中的 #ifeq 语句
- python - 如何在图像中找到形状的坐标
- javascript - Javascript 无法导入现有常量
- python - 具有共享 x 轴的 Seaborn 图
- javascript - 在 Twilio 函数中获取入站短信号码
- javascript - 在许多不同的表(谷歌表)中使用来自一个谷歌脚本的函数
- android - 如何更改文本字段的颤动默认复制/暂停/选择菜单?
- java - Eclipse IDE 版本 2019-09 R (4.13.0) 无法识别 Maven 依赖项