2013-03-21 112 views
1

我已經搜索了該網站,並獲得足夠的地方,我已經成功地重寫到一個乾淨的URL。只需要更多的幫助。使用下面的URL Rewrite rewrite x.php?id = 1

domain/record.php?id=1685 > to > domain/record-Gavin-Rees-1685

我有,我已經成功地改寫到一個乾淨的URL像這樣記錄頁面

.htaccess文件:

RewriteRule ^record-(.*)-(.*)$ /record.php?id=$2 [L] 

這在我php文件:

$temp=str_replace(' ','-', $record [record_name]); 
$temp=str_replace('.','', $temp); 

<a href='/record-". $temp ."-".$record[id]." '> 

這工作完美。問題是。

我不能讓它改寫其他的方式,所以如果你直接去:

/record.php?id=1685 it still exists. i tried > RewriteRule ^record.php?id=$ /record-(.*)-(.*)$ [R,L] 
+2

您無法添加您沒有的信息。 mod_rewrite沒有辦法知道對於ID 1685,這些空白應該填充「Gavin」和「Rees」。在您的第一種情況下,您只使用原始請求網址中的信息,這就是它工作的原因。 – Adrian 2013-03-21 16:40:15

+0

正確,這就是爲什麼你應該在腳本中處理它。找出最初請求腳本的方式(查看$ _SERVER) - 然後如果它被稱爲「錯誤」的方式,請在數據庫中查找必要的數據,並使用Location標題將客戶端重定向到所需的URL。 – CBroe 2013-03-21 16:42:59

+0

對不起,我沒跟着。 – MichaelQ 2013-03-21 16:43:07

回答

0

這是不可能的.htacces重寫規則,因爲你無法定義的一般規則,知道你的軟件內部。如果你想在你的.htaccess文件中這樣做,你必須爲每一個id創建一個規則,這會導致一個非常大而且不方便的.htaccess文件。

獲得直接腳本調用重定向的更好的方法是,在php文件本身中進行重定向並設置http狀態代碼(即301--永久移動)。 獲取請求的網址,您可以使用$_SERVER['REQUEST_URI']並在開始時檢查/record.php