【问题标题】:Rewrite rule - strange behaviour with $_GET重写规则 - $_GET 的奇怪行为
【发布时间】:2014-01-30 13:45:09
【问题描述】:

我有这个重新布线规则:EDITED

RewriteRule ^(.*)$ $1.php [NC]// the problem is caused by this. How can I keep it without having this result?
RewriteRule    ^user/(.*)$    user.php?user=$1    [NC]    
RewriteRule ^ride/(.+)/$ ride.php?myRideId=$1 [NC,L]   

当我这样做时:

www.example.com/ride/123 

一切正常,我的浏览器正确显示上述页面,但如果我尝试使用:

  $rideId = $_GET['myRideId'];
  echo $rideId;

结果是:

123.php/123

我不明白为什么。重写规则有什么问题吗?

【问题讨论】:

  • 什么 print_r($_GET);给你结果?
  • @MihirChhatre 数组 ([myRideId] => 123.php/123)

标签: php get rewrite


【解决方案1】:

你试过这样做吗?

RewriteRule ^ride/(.+)/?$ ride.php?myRideId=$1 [NC,L]

试试这个。您还需要将您的 URL 写为:

www.example.com/ride/123/ 

【讨论】:

  • 如果我这样做:www.example/ride/123/ 我得到 123/.php/123/ 否则我仍然可以通过 www.example/ride/123 获得上述结果(也使用新的规则)
  • 怎么样:RewriteRule ^ride/(.+)/$ride.php?myRideId=$1 [NC,L]
  • 对不起,我应该把所有的重写规则都贴出来。这将有助于找到解决方案。问题是 RewriteRule ^(.*)$ $1.php [NC] 它在所有其他规则之前。我将编辑我的问题。有没有办法在不产生结果的情况下保持该规则?
  • 尝试编写有关您编写的行的代码:

    RewriteRule ^ride/(.+)$ride.php?myRideId=$1 [NC] RewriteRule ^user /(.*)$ user.php?user=$1 [NC] RewriteRule ^(.*)$ $1.php [NC]

  • 我收到“500 内部服务器错误”。它仅在我删除 RewriteRule ^(.*)$ $1.php [NC] 时才有效,但我想保留它,因为它将我的所有其他页面从 www.example.com/foo.php 更改为 www.example.com /foo
猜你喜欢
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多