Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重写和url解码_Url_Mod Rewrite_Rewrite_Decode - Fatal编程技术网

重写和url解码

重写和url解码,url,mod-rewrite,rewrite,decode,Url,Mod Rewrite,Rewrite,Decode,似乎有一个网站链接到我的网站的方式不好。 从谷歌网站管理员工具中,我看到了一些404错误 domain.com/file.php?id=1 (404) Not found (Date) 此url正常工作,但由于浏览器页面解码,实际(404)url为 我的第一次尝试是 RewriteRule ^(.*)\%3F(.*)$ $1?$2 [R=301, L] 将%3F更改为“?”,但不起作用。它混淆了什么是真实的,什么是解码的 谢谢,试试这个: RewriteRule ^(.*\%3F.*)

似乎有一个网站链接到我的网站的方式不好。 从谷歌网站管理员工具中,我看到了一些404错误

domain.com/file.php?id=1 (404) Not found    (Date)
此url正常工作,但由于浏览器页面解码,实际(404)url为

我的第一次尝试是

RewriteRule ^(.*)\%3F(.*)$ $1?$2 [R=301, L]
%3F
更改为“
”,但不起作用。它混淆了什么是真实的,什么是解码的

谢谢,试试这个:

RewriteRule ^(.*\%3F.*)\%26([^%]*)(\%3D)?(.*)$ $1&$2=$4 [N]
RewriteRule ^(.*)\%3F([^%]*)(\%3D)?(.*)$ $1?$2=$4 [R=301,L]
编辑:我看到您已经测试了%3F。。。如果这不起作用,那么可能会出现其他问题。

嗯,试试这个:

RewriteRule ^(.*\%3F.*)\%26([^%]*)(\%3D)?(.*)$ $1&$2=$4 [N]
RewriteRule ^(.*)\%3F([^%]*)(\%3D)?(.*)$ $1?$2=$4 [R=301,L]

编辑:我看到您已经测试了%3F。。。如果这不起作用,那么可能会出现其他问题。

这不是一个优雅的解决方案,但几个月后,这是我找到的唯一方法

常规病例

domain.tld/dir/file.php?id=UID&qty=NUM&...   (from old site structure)
被改写为

domain.tld/newfile.php?id=UID&qty=NUM&... [R=301,L]
所以,对于像这样的请求

domain.tld/dir/file.php%3Fid%3DUID%26qty=NUM%26...   (from old site structure)
我表演

RewriteRule ^dir/file\.php(.*)$ script.php?qs=$1 [R,L]
这必须在所有涉及dir/file.php的指令之后

然后我可以在script.php中处理查询字符串$\u GET['qs']


它可能不适用于其他可能进入循环或不期望的结果的情况。

这不是一个优雅的解决方案,但几个月后,这是我找到的唯一方法

常规病例

domain.tld/dir/file.php?id=UID&qty=NUM&...   (from old site structure)
被改写为

domain.tld/newfile.php?id=UID&qty=NUM&... [R=301,L]
所以,对于像这样的请求

domain.tld/dir/file.php%3Fid%3DUID%26qty=NUM%26...   (from old site structure)
我表演

RewriteRule ^dir/file\.php(.*)$ script.php?qs=$1 [R,L]
这必须在所有涉及dir/file.php的指令之后

然后我可以在script.php中处理查询字符串$\u GET['qs']


它可能不适用于其他可能进入循环或不需要的结果的情况。

在重写规则中使用[NE]标志

在重写规则中使用[NE]标志

RewriteCond%{QUERY_STRING}^id\%3D(+)
重写规则^(.*)$1?id=%1[R=301,L]
是否通过“=”为file.php?id%3D1.Oh更改%3D,您已经尝试了%3F。。嗯,可能还有别的事情在进行中。有什么需要帮忙的吗?从谷歌网站管理员工具,我仍然得到这种错误。推荐人是链接到矿山的第三页。我无法以任何方式重定向它们。此时GWT summary显示编码的url:domain.com/file.php%3Fid%3D1不是像过去那样的解码url
RewriteCond%{QUERY\u STRING}^id\%3D(+)
RewriteRule^(.*$$1?id=%1[R=301,L]
是否通过“=”对file.php?id%3D1.Oh,您已经尝试了%3F。。嗯,可能还有别的事情在进行中。有什么需要帮忙的吗?从谷歌网站管理员工具,我仍然得到这种错误。推荐人是链接到矿山的第三页。我无法以任何方式重定向它们。此时GWT summary显示编码的url:domain.com/file.php%3Fid%3D1而不是像过去那样的解码url。不,它不起作用。我不知道该怎么办。没有其他类似的规则会影响http行为。不,它不起作用。我不知道该怎么办。没有编写会影响http行为的其他类似规则。@craniumonempty未解码的URL会生成404错误,因此会向用户显示404.php。我可以解码请求URI,并将其从该文件转发到解码url(如果编码和解码版本不同)。这是一种好的做法吗?Webspider将首先获得404头,然后@craniumemempty那些未解码的URL将生成404错误,因此404.php将显示给用户。我可以解码请求URI,并将其从该文件转发到解码url(如果编码和解码版本不同)。这是一种好的做法吗?网络蜘蛛会先得到404头,然后呢?