2013-02-14 98 views
0

当我去:

https://sitedomain/product-name-p-1106.html?ref=facebook&keyw=pagetype0:friends 

的网址更改为:

https://sitedomain/product-name-p-1106.html?keyw=pagetype0friends&ref=facebook 

Basicly的$裁判$ 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] 
+6

为什么重要?排序应该不重要。请注意,您的'.htaccess'不仅仅是重新排序,而且还会丢失'pagetype0:friends'中的冒号。 – nickb 2013-02-14 19:28:27

+0

变量在什么顺序中有关系吗? – 2013-02-14 19:28:57

+0

.htaccess是否按名称排序? – Class 2013-02-14 19:30:56

回答

2

他们只是在命名的参数,并且不需要任何特定的顺序。如果你依赖任何特定的顺序,你在代码中做了一些根本性的错误。

+0

没有写出依赖于该顺序的代码,我希望不必改变它...对于我正在尝试使用的代码,他们确实需要按照特定的顺序... – 2013-02-14 19:34:10

+1

如果脚本依赖于参数顺序,你应该好奇它还有什么错误。 – Wormbo 2013-02-14 19:35:46

+0

如果订单很重要,那么只需改变处理它们的代码即可。问题解决了。 – itachi 2013-02-14 19:37:57

0

我在这里得到的消息是:

千万不要制造或使用依赖的URL参数的顺序码

0

$ _GET瓦尔不应依赖的顺序,除非你”重新向$ _GET靠拢,公然忽视索引。此外,MOD_REWRITE不会在浏览器端的URI中重新排序,而只会更改订单/分配服务器端。

正如其他人所说,如果顺序是非常重要的,并且在这种情况下,我会将值作为分隔字符串传递,而不是单个$ _GET值。

我知道你“不想”重写这个脚本,但是正如别人所说的那样想到它可能会做错什么呢?此外,你真的想要这样的失败点吗?