2012-07-19 33 views
1

我一直工作在一小片PHP脚本的我花了几天(我是小白)如何使用友好的URL?

这里是我的代码:

<?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://本地主机/ mysite的/视频/ 1-第一视频标题

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关键字的位置。

谢谢!

+1

嗯..我不知道“谢谢”是一个PHP关键字。 – Hassan 2012-07-19 23:21:56

+2

这就像扔,而不是例外,你会得到一个充满小猫的页面。 – Mahn 2012-07-19 23:22:43

+2

不要与“Spank”混淆,它会让你看到一个完全不同的页面。 – 2012-07-19 23:24:30

回答

0

我想在这里你的问题可能实际上是非常简单的:在规则被轮RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+) atest.php?id=$1&url=$2[L,QSA]捕捉变量以错误的方式将匹配“ATEST /例如-42”并将其映射到“atest.php ID =例如& URL = 42 “ - 1美元指第一组括号,第二美元2美元。尝试print_r()var_export()$_GET

顺便说一句,该正则表达式可能出错在一些边缘的情况下,因为它不主张将ID来在最后 - 所以“ATEST /例如-2-字处理42“可能最终挑出ID为2,而不是42.添加”$“应该修复:RewriteRule atest/([a-zA-Z0-9\-]+)-([0-9]+)$ atest.php?id=$1&url=$2 [L,QSA]

如果重写规则根本不起作用(您的问题不清楚结果是什么是)它可能是一些微妙的Apache的.htaccess处理...