我一直在研究一小段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重写。我想要一种网址:


  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放在第二个括号中。尝试print_r()var_export()$_GET

顺便说一句,该正则表达式在某些情况下可能会出错,因为它没有断言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处理中的一些细微之处...

09-11 18:24
查看更多