如何使用.htaccess重写URL

时间:2016-04-23 02:51:05

标签: php .htaccess

我想重写:

news.php?q=Contact+form+with+attachment

看起来像:

news/Contact+form+with+attachment

我的链接看起来像这样

<a href="news/'.urlencode($row['title']).'">

并且看起来像这样

http://localhost/untitled/public_html/news/Contact+form+with+attachment

在我的news.php file中,我将此代码放在顶部

<?php $id = urldecode($_GET['q'])
$id = preg_replace('#[^0-9a-zA-Z]#i','',$id);
     $query = "SELECT * FROM news WHERE title = :id" ?>;

然后在我的.htaccess中写了这个

RewriteRule ^news/([0-9a-zA-Z_%+-]+) news.php?q=$1 [NC,L]

但是,当我点击链接时,它不起作用,它显示一个空/空白页面 请帮助谢谢

2 个答案:

答案 0 :(得分:1)

看起来你可能会得到一个白色的空白页面,因为你在这一行末尾的php中遗漏了; <?php $id = urldecode($_GET['q'])

我不知道这是否是你的整个问题,但首先要加上这样的话:

<?php 
  $id = urldecode($_GET['q']);
  $id = preg_replace('#[^0-9a-zA-Z]#i','',$id);
  $query = "SELECT * FROM news WHERE title = :id" ?>;

答案 1 :(得分:1)

第一个变量$id未正确关闭。也许页面返回一个空的或空白的空间,因为它是一个致命的错误。为此更改您的代码:

<?php 
$id = urldecode($_GET['q']);
$id = preg_replace('#[^0-9a-zA-Z]#i','',$id);
$query = "SELECT * FROM news WHERE title = :id";
?>

抱歉我的英文。