【问题标题】:htaccess rewrite with question mark full urlhtaccess 用问号完整 url 重写
【发布时间】:2021-08-12 00:29:54
【问题描述】:

大家好,我想传递用 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

我该如何解决这个问题?我在网站上尝试了很多示例,但都失败了。

【问题讨论】:

    标签: regex .htaccess mod-rewrite


    【解决方案1】:

    诀窍是不要使用RewriteRule,因为您只会在? 之前获得URI 部分。

    您应该为此使用 RewriteCondTHE_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

    【讨论】:

      猜你喜欢
      • 2013-09-03
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 2013-12-24
      相关资源
      最近更新 更多