【问题标题】:GET parameter when rewritten by htaccess被 htaccess 重写时的 GET 参数
【发布时间】:2013-02-11 08:25:43
【问题描述】:

这是我的默认动态链接:

www.example.com/news/index.php?id=5&title=Test-Title-3

这是htaccess重写的链接:

www.example.com/news/5/Test-Title-3

现在我希望用 PHP 获取 id 变量(即 5)和/或 title 变量(即 Test-Title-3)。

我尝试过使用$_GET['id'] 但返回

index.php/Test-Title-3

或使用 $_GET['title'] 什么都不返回。知道如何获取变量吗?

(已编辑) 这是我的 .htaccess 文件,以备不时之需:

Options +FollowSymLinks Options All -Indexes 
<files .htaccess> 
  order allow,deny 
  deny from all 
</files>
RewriteEngine on
RewriteRule (.*)/(.*)/ index.php?id=$1&title=$2 

【问题讨论】:

  • 你需要在 RewriteRule (.*)/(.*)/index.php?id=$1&title=$2 [QSA] 末尾添加 [QSA] 标志
  • 嘿,谢谢!它有效,我觉得错过那个标志真的很愚蠢

标签: php url variables dynamic


【解决方案1】:

您的 .htaccess 重写规则应该是:

RewriteRule ^news/([0-9]+)/([a-zA-Z\-]+)$ /news/index.php?id=$1&title=$2 [QSA,L]

$1$2 是根据 () 中包含的表达式定义的。 这将向用户显示 URL www.example.com/news/5/Test-Title-3,而您的脚本的实际 URL 将是 www.example.com/news/index.php?id=5&amp;title=Test-Title-3,因此您将能够像往常一样使用 $_GET['id']$_GET['title']

【讨论】:

  • 我确实尝试使用你的规则,但突然返回错误 404。也许我也应该更改我的链接 href?
  • 不用了,正则表达式有bug。它现在可以工作(使用 htaccess.madewithlove.be 测试)
【解决方案2】:

您可以使用 php 获取 id 值。只需使用以下代码:

   <?php
      $url = $_SERVER['REQUEST_URI'];
      $val = explode("/", $url);
      echo "Your id is: ".$val[2];
   ?>

希望这会有所帮助!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2013-03-24
    相关资源
    最近更新 更多