微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

htaccess 用问号重写完整 url

如何解决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 变量的 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。