【问题标题】:htaccess: How to display GET variables?htaccess:如何显示 GET 变量?
【发布时间】:2019-05-30 16:37:35
【问题描述】:

我有显示新闻的代码。但现在我想用.htaccess 隐藏id=2 bla .. 一切正常,但不显示获取变量

我尝试过使用[L,QSA][NC,QSA] 都没有工作

//获取变量

<?php
if (isset($_GET['id']) && !empty($_GET['id'])) {
    $id        = $_GET['id'];
    $stmt_edit = $pdo->prepare('SELECT * FROM articles WHERE id =:uid');
    $stmt_edit->execute(array(
        ':uid' => $id
    ));
    $edit_row  = $stmt_edit->fetch(PDO::FETCH_ASSOC);
    $image     = $edit_row['headline_image'];
    $article   = $edit_row['article_body'];
    $headlines = $edit_row['headlines'];
    $date      = $edit_row['date'];
    $month     = $edit_row['month'];
    $admin     = $edit_row['admin'];
} else {
    header("Location: index.php");
} 

//.ht访问代码

Options  -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} -f

RewriteRule ^ - [L]
RewriteRule ^index?$ index.php
RewriteRule ^news/([0-9]+) news.php?id=$newsid [L,QSA]

我正在使用 get 函数之外的变量来显示相应变量的内容。

【问题讨论】:

  • 您检查过$_GET['id'] 包含的内容吗? (这应该给你一个线索。)

标签: php regex .htaccess mod-rewrite


【解决方案1】:
RewriteRule ^news/([0-9]+) news.php?id=$newsid [L,QSA]

为什么是$newsid$newsid 在这里被视为文字字符串,因此您的 PHP 代码中的 $id(即$_GET['id'])将始终是文字字符串 "$newsid"(但大概您在调试 PHP 代码时看到了这个?)

您应该改用$1 反向引用。例如:

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

除此之外:您可能还需要RewriteRule 上的字符串结尾锚点 ($) 模式,否则这将匹配 /news/123anything .或者也许这就是意图?

【讨论】:

    猜你喜欢
    • 2017-07-24
    • 2011-12-02
    • 2021-08-26
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多