Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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
PHP$\u在URL中重新排列变量,为什么?_Php_.htaccess_Mod Rewrite - Fatal编程技术网

PHP$\u在URL中重新排列变量,为什么?

PHP$\u在URL中重新排列变量,为什么?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,当我去: https://sitedomain/product-name-p-1106.html?ref=facebook&keyw=pagetype0:friends url将更改为: https://sitedomain/product-name-p-1106.html?keyw=pagetype0friends&ref=facebook 基本上,$ref和$keyw变量是相反的为什么会发生这种情况?我如何才能阻止它? 注意:我试图使用一个脚本,该脚本依赖于其他人编写的$

当我去:

https://sitedomain/product-name-p-1106.html?ref=facebook&keyw=pagetype0:friends
url将更改为:

https://sitedomain/product-name-p-1106.html?keyw=pagetype0friends&ref=facebook
基本上,$ref和$keyw变量是相反的为什么会发生这种情况?我如何才能阻止它?

注意:我试图使用一个脚本,该脚本依赖于其他人编写的$ref然后$keyw的顺序,我希望保持该顺序,以避免修改该脚本

我想可能是.htaccess文件,但不确定,以下是该文件:

RewriteBase / 
RewriteRule ^([a-z0-9/-]+)-p-([0-9]+).html$ product_info.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-c-([0-9_]+).html$ index.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-m-([0-9]+).html$ index.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-pi-([0-9]+).html$ popup_image.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-pr-([0-9]+).html$ product_reviews.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-pri-([0-9]+).html$ product_reviews_info.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-t-([0-9_]+).html$ articles.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-au-([0-9]+).html$ articles.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-a-([0-9]+).html$ article_info.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-i-([0-9]+).html$ information.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-links-([0-9_]+).html$ links.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-n-([0-9]+).html$ newsdesk_info.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-nc-([0-9]+).html$ newsdesk_index.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-nri-([0-9]+).html$ newsdesk_reviews_info.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-nra-([0-9]+).html$ newsdesk_reviews_article.php [NC,L,QSA]

它们只是命名参数,不需要任何特定的顺序。如果您依赖于任何特定的排序,那么您的代码中存在根本性的错误。

我在这里得到的信息是:


永远不要制作或使用依赖于URL参数顺序的代码

$\u GET vars不应该依赖于顺序,除非您正在使用$\u GET并公然忽略索引。此外,MOD_REWRITE不会在浏览器端对URI中的内容重新排序,只会更改服务器端的排序/分配

正如其他人所说,如果顺序如此重要,那么就会出现一些错误,在这种情况下,我会将值作为分隔字符串传递,而不是单独的$\u GET值


我知道你“不想”重写这个脚本,但正如其他人所说的,想想还有什么地方可能出错?此外,您真的想要这样的失败点吗?

为什么这很重要?顺序应该无关紧要。请注意,您的
.htaccess
不仅仅是重新排序,您还在
页面类型0:friends
中丢失冒号。变量的顺序是否重要?htaccess是否按名称排序?我正在尝试使用其他人编写的脚本,该脚本依赖于变量的顺序,尝试不修改该脚本。通过
$\u GET
访问这些变量的PHP脚本都不需要按特定顺序访问这些变量。因此,如果您指的是需要此顺序的
product_info.php
,那么脚本有问题,而不是URL。没有编写依赖于此顺序的代码,我希望不必更改它。。。对于我试图处理的内容,它们确实需要按照特定的顺序…如果脚本依赖于参数顺序,那么您应该真正想知道它还有什么错误。如果顺序很重要,那么只需反转处理它们的代码即可。问题解决了。@itachi true,您在.htaccess中看到负责订购的代码了吗?我不会检查所有这些代码。我只能说,为什么订单如此重要?因为我从来没听过这么重要的命令。