我一直在研究一小段 php 脚本,这花了我几天时间(我是菜鸟)
这是我的代码:
<?php
require ('connect.php');
$requete = mysql_query('SELECT * FROM videos WHERE id="'.$_GET['id'].'"') or die(mysql_error());
if(mysql_num_rows($requete)=='0'){
}else{
while($resultats = mysql_fetch_array($requete)){
?> <!-- some html content --> <?php
}
}
mysql_close();
?>
</body>
</html>
此脚本根据 ID 从我的数据库中检索内容。
http: //localhost/mysite/video/atest.php?id=1
我想知道我必须使用哪种 url 重写才能检索某些关键字。我想要那种 URL:
http: //localhost/mysite/video/1-first-video-title
RewriteEngine On
RewriteCond %{REQUEST_URI} !\.(css|png|jpe?g|gif|js|mp3|3gp|ico)$
RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+) atest.php?id=$1&url=$2[L,QSA]
出了什么问题?
我也想用那个,但是屏幕上什么也没有显示(找不到这个页面)。
if($resultats["url"]!=$_GET["url"]) {
header ("location:/mysite/video/".$resultats["url"]."-".$resultats["id"]);
}
它在我的表格中搜索 URL 关键字。
谢谢!
最佳答案
我认为您的问题实际上可能非常简单:RewriteRule 以错误的方式捕获变量 RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9] +) atest.php?id=$1&url=$2[L,QSA]
将匹配“atest/example-42”并将其映射到“atest.php?id=example&url=42” - $1 指的是第一组括号,$2 到第二组。尝试 $_GET
print_r()
或 var_export()
顺便说一下,正则表达式在某些极端情况下可能会出错,因为它没有断言 ID 必须出现在最后 - 所以“atest/example-2-word-42”可能最终会挑选出ID 为 2,而不是 42。添加一个“$”应该可以解决这个问题:RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+)$ atest.php? id=$1&url=$2 [L,QSA]
如果重写规则根本不起作用(您的问题不清楚结果是什么),则可能是 Apache 的 .htaccess 处理有些微妙...
关于php - 如何使用友好的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570720/