我的网站有以这种格式的网址:
http://example.com/teste/link/produto/evento.php?evento=1234&origem=site
我想做的是如果用户输入:
并显示
的内容http://example.com/teste/link/produto/evento.php?evento=1234&origem=site
所以,我在.htaccess上做了一个规则,我创建了一个transform.php,在那里我收到了参数event:
$event = $_REQUEST['event'];
$select_evento = mysql_query("SELECT * FROM evento WHERE alias = '$event'") or die(mysql_error());
$evento = mysql_fetch_array($select_evento);
$count_evento = mysql_num_rows($select_evento);
echo $event;
if ($count_evento > 0) {
header("Location:/teste/link/produto/evento.php?evento=".$evento['id']);
} else {
echo "Ops, o evento que tentou acessar não existe. Verifique o endereço digitado.";
}
我的.htaccess看起来像这样:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*transform.php?event=$1 [L]
它调用transform.php,执行标题(位置)。
问题是:如何在不在网址前面输入参数的情况下使我的链接与URL保持一致,而不向用户显示此uglies URL?
答案 0 :(得分:1)
您无需使用“transform.php”页面。
而是让您的重写为RewriteRule .*/teste/link/produto/evento.php?event=$1 [L]
在“evento”页面中,使用转换中的代码来设置事件ID。然后使用此ID显示您需要的任何内容:
$event = $_REQUEST['event'];
$select_evento = mysql_query("SELECT * FROM evento WHERE alias = '$event'") or die(mysql_error());
$evento = mysql_fetch_array($select_evento);
$count_evento = mysql_num_rows($select_evento);
$event_id = $evento['id'];
基本思路是,不要重定向用户。只需在最终的PHP页面中使用ID即可。
另外,请考虑使用PDO进行MySQL查询。 (查找“mysql注入”)。