2014-03-30 109 views
0

我已經使用.htaccess重寫了我的URL,並且所有內容都可以正常工作,但是沒有找到所選文章的ID。重寫的URL沒有拾起ID PHP

我的網址已經從http://www/website.co.uk/news.php?id=111111使用改爲http://www.website.co.uk/news/111111

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^id=(.*)$ 
RewriteRule ^news.php$ /news/%1? [L,R] 

然而,news.php頁面內我抓住的ID號碼使用:

if(isset($_GET["id"])){ 
$id = $_GET["id"]; 
} 
else{ 
header("Location: redirect.php?type=error"); 
exit(); 

所以,當我現在運行的頁面,它會重定向到redirect.php頁面,因爲它不是獲取ID。我怎樣才能排序這個錯誤?

+0

你需要做更多的調試不僅僅是讓它重定向到錯誤頁面。看看$ _GET裏面有什麼,所以你可以看看數組是否爲空。把'print_r($ _ GET); exit;'放在頁面頂部。當你訪問你的URL時,你將能夠看到陣列中的內容。如果你使用乾淨的URL,你的寫作也不會看起來像。它看起來倒退了。 –

+0

打印輸出只是'Array()' – user3177012

回答

0

您已經編寫了一個外部重定向,它將用戶的瀏覽器指向http://www.website.co.uk/news/111111。這就是您的服務器將會看到的URL - 因此,URL中沒有ID參數。你要一個多行添加到您.htaccess在內部重寫URL到老(參數化)之一:

RewriteRule ^news/([0-9]+) news.php?id=$1 [QSA] 

用戶仍然會看到不帶參數的重寫URL,但你的PHP腳本將得到舊的(news.php?id=111111)。

+0

謝謝,我可以看到你的意思,但不幸的是,上面的腳本仍然重定向到錯誤頁面 – user3177012

+0

嗯,我想知道爲什麼你的服務器委託給news.php的請求所有。因爲在URL「/ news/111111」中只有一個目錄「新聞」。你有沒有發佈完整的'.htaccess'? 嘗試在'.htaccess'頂部添加'Options -MultiViews'。如果這也失敗了,您仍然可以使用基於重寫URL的Shane Reeves解決方案,但需要在提取請求的腳本中執行更多工作。 – Callidior

0

嘗試使用PHP的preg_split()方法將URI拆分爲可用值。

<?php 
define('APPLICATION_URL', 'http://website.co.uk/'); 
$url = str_replace(APPLICATION_URL, null, $_SERVER['REQUEST_URI']); 
$urlData = preg_split('/[\/\?]/', $url); 
echo $urlData[0] . '/' . $urlData[1]; 
?> 

上面的代碼應該輸出:news/111111

祝你好運!

0

下應該工作

RewriteEngine On 
RewriteCond %{QUERY_STRING} ^id=(.*)$ 
RewriteRule ^news.php$ /news/%1? [L,R] 

RewriteRule ^news/(.*) news.php?id=$1 [QSA] 

第二RewriteRule應該靜靜重寫URL回到原來的URL,這樣用戶仍然可以看到news/11111,但你的PHP頁面應該拿起id值。

編輯:試試這個

RewriteEngine On 
#External redirect with THE_REQUEST trick; change R to R=301 when everything works correctly 
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /news\.php\?id=(.*)\ HTTP 
RewriteRule^/news/%2\? [R,L] 

#Internal rewrite 
RewriteRule ^news/(.*) /news.php?id=$1 [L] 
+0

謝謝,但這是行不通的 - URL重定向到/ news/111111完美,但它不會讓腳本拿起ID。我真的希望我能得到這個工作 – user3177012

+0

對不起,嘗試我編輯的代碼。 – Howli

+0

不,頁面仍然重定向到錯誤頁面 - 我從新聞頁面取出了GET PHP腳本,並且URL重定向到了website.co。uk/news/GET' – user3177012