RewriteCondition隐藏查询字符串

时间:2014-03-17 13:40:36

标签: php apache .htaccess mod-rewrite

我正在尝试隐藏URL中的查询字符串。

cerberlus.com/review.php?id=Christopher%20Nolan%20

我尝试了一些重写条件,但没有一个工作,但这是我第一次尝试这个程序。

非常感谢任何帮助。

这是数据的显示方式。

<div id="sub_review_container"> <? echo ($_GET['title'])?></div>
<div id="Review_container"> <? echo ($_GET['id'])?> </div>

这就是它的发送方式:

<td align="left"><a href="review.php?id='. $row['review'] . '&title=' . $row['movie_title']  .'"> Read Review </a>

2 个答案:

答案 0 :(得分:1)

它被称为nice urls

# if it does not exist as a directory 
RewriteCond %{REQUEST_FILENAME} !-d 
# and if it does not exist as a file 
RewriteCond %{REQUEST_FILENAME} !-f 
# then add .php to get the actual filename 
RewriteRule ^(.*)/? index.php?q=$1 [L]

无论您的网址是什么,它始终会以$_GET['q']结尾。在那里你可以做任何你想做的事。

答案 1 :(得分:0)

  

通过键入URL来防止人们编辑显示的内容。我只想隐藏所有数据

您无法删除查询字符串并能够提取“id”。 “id”需要与请求一起发送,否则<? echo ($_GET['id'])?>将始终为空白,因为没有“id”存在。

如果您将其添加到URL中,那么人们仍然可以键入他们想要的任何内容,它不会隐藏任何东西而不是查询字符串。它看起来会好一些。

类似的东西:

<td align="left"><a href="/review/'. $row['review'] . '/' . $row['movie_title']  .'/"> Read Review </a>

这使得网址看起来像/review/idname/movietitle/

然后在你的htaccess文件中:

Options -Multiviews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewrteRule ^review/([^/]+)/([^/]+)/$ /review.php?id=$1&title=$2 [L,QSA]

由于路径发生变化,您可能需要更新您的内容,以便相对链接正确解析(例如图像,样式,脚本等)。您可以通过将所有链接设为绝对链接或将其添加到页面标题来执行此操作:

<base href="/" />