在rewriterule正则表达式之后,PHP不会读取第二个$ _GET变量

时间:2015-09-13 00:30:42

标签: php regex .htaccess

这是我的重写

我的链接看起来像3.5或1.0.0.315 3.05等

RewriteRule ^([0-9]+\.([0-9]+)?[^a-zA-Z]+)$ index.php?Patch_No=$1 [NC,L]

在我的链接下面应该像3.5& items 3.5& champions 1.0.0.315& items etc.。

RewriteRule ^([0-9]+\.([0-9]+)?[^a-zA-Z]+)&([a-zA-Z_-]+)$ index.php?Patch_No=$1&tab=$2 [NC,L]

我确实得到了$ _GET ['Patch_No'],但是我没有得到$ _GET ['tab']这个变量由于某种原因从未设置过。

所以当它像

时一样正常
^([0-9]+\.[0-9]+[^a-zA-Z]+)$

但是它与3.5不匹配它仅适用于像3.05 3.26 1.0.0.125等数字但是我需要它与3.5一起使用所以我添加了

^([0-9]+\.([0-9]+)?[^a-zA-Z]+)

它适用于我上面发布的第一个RewriteRule,但它不适用于带有tab变量的第二个

这里也是var_dump($ _ GET);

array (size=2)
  'Patch_No' => string '3.5' (length=3)
  'tab' => string '' (length=0)

1 个答案:

答案 0 :(得分:0)

这就是我所看到的。

1)你的链接必须看起来像你想要传递的变量。如果您想传递两个变量,那么您的链接应该看起来像List<Movie> mMovieList = new ArrayList<Movie>; Bundle bundle = getIntent().getExtras(); mMovieList = bundle.getParcelableArrayList("movie_object"); /3.05/items 2)重写规则不了解&#34;等等#34;手段。它们非常精确。要么他们匹配正则表达式,要么他们不匹配。因此,您必须具体说明在创建它们时您希望他们做什么。

这些是您正在寻找的规则

1.0.0.315/champions

我为你提供了两组数字和四组数字的查询规则,因为这些是你在问题中给我们的例子。

但是,您可以通过在规则中添加或删除RewriteRule ^([0-9]+).([0-9]+)$ index.php?Patch_No=$1 [NC,L,QSA] # allows two sets of numbers RewriteRule ^([0-9]+).([0-9]+)&([A-Za-z]+))$ index.php?Patch_No=$1 [NC,L,QSA] # allows two sets of numbers & text RewriteRule ^([0-9]+).([0-9]+).([0-9]+).([0-9]+)$ index.php?Patch_No=$1 [NC,L,QSA] # allows 4 sets of numbers RewriteRule ^([0-9]+).([0-9]+).([0-9]+).([0-9]+)&([A-Za-z]+)$ index.php?Patch_No=$1 [NC,L,QSA] # allows 4 sets of numbers & text 来尽可能多地制作。

快乐的编码!