我一直在研究一小段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
我想知道为了检索一些关键字我必须使用哪种网址重写。我想要这种网址:
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关键字。
谢谢!
答案 0 :(得分:0)
我认为你的问题实际上可能非常简单:RewriteRule以错误的方式捕获变量RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+) atest.php?id=$1&url=$2[L,QSA]
将匹配“atest / example-42”并将其映射到“atest.php?id = example&amp; 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处理可能会有些微妙......