2012-07-19 63 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處理...