【问题标题】:Mod_rewrite, $_GET does not pass along the variablemod_rewrite, $_GET 不传递变量
【发布时间】:2013-01-17 07:09:46
【问题描述】:

我正在努力

domain.com/notalone/viewpost/5/ 

充当

domain.com/notalone/viewpost.php?id=5

我当前的 .htaccess 是这样的:

RewriteEngine On

RewriteRule ^notalone/viewpost/([0-9]+)/?$ /viewpost.php?id=$1 [QSA]

目前,当您访问/notalone/viewpost/5/ 时页面正常加载,但它没有通过$_GET['id']

我尝试过的事情

  • 添加Options -Multiviews ---> 导致 404
  • 使用Rewritebase / ---> 没有效果
  • RewriteRule ^viewpost/([0-9]+)/?$ /viewpost.php?id=$1 [QSA] ---> 没有效果

【问题讨论】:

  • 结合[QSA]?id=$1 可能会遇到挑战。你可以使用:RewriteRule ^viewpost/([0-9]+)/?$ /viewpost.php?id=$1&%{QUERY_STRING} 没有 QSA
  • 如果您将 $1 硬编码为诸如 'blah' 之类的字符串,它会通过吗?可能是您的 $1 变量没有捕获您认为的内容。
  • 不走运。这是服务器变量的 sn-p ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string(21) "/notalone/viewpost/5/"
  • @EricLeschinski 将其更改为 blah5,两者均无效。

标签: mod-rewrite get


【解决方案1】:

尝试添加传递标志,如下所示:

RewriteRule ^notalone/viewpost/([0-9]+)/?$ /viewpost.php?id=$1 [QSA,PT]

'PT' 调整内部 URL,以便以后的处理程序看到 mod_rewrite 工作的结果,而不是原始 URL。

【讨论】:

    【解决方案2】:

    解决了这个问题。问题显然是我的目录的问题,因为当我将网站移动到它自己的主机(它自己的根目录而不是 notalone 子目录)时,一切似乎都像一个魅力。

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 2010-12-02
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-10
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多