我有显示新闻的代码。但现在我想使用.htaccess
隐藏id=2
bla。
一切正常,但不显示get变量
我尝试使用[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");
}
//。htaccess代码
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函数之外的变量,以显示相应变量的内容。
答案 0 :(得分: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
。还是那是目的?