2010-07-29 108 views
1

好的我在過去幾天一直在重寫URL重寫,似乎已經到了一個死衚衕。我已經提出了一些適用於某些服務器而不是其他解決方案的解決方案,而我的託管公司(1and1 - 如果您選擇它們​​作爲主機,請對這些人保持警惕)根本無法提供幫助。簡單(?)htaccess重寫問題

我的問題是這樣的,我想重新寫這個網址:(如果沒有添加斜線)

/result.php?section=[section name]&url=[url] 

這樣:

/article/[section name]/[url]/ 

section.php?section=[section name] 

(再次添加尾部斜線):

/section/[section name]/ 

每次嘗試似乎都有不同的結果。目前我使用thhe以下,其中本地工作,但現場服務器上只有「文章」重寫工作:

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /article/$1/$2/ 
RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /result.php?section=$1&url=$2 

RewriteRule ^section/([a-zA-Z0-9_-]+)$ /section/$1/ 
RewriteRule ^section/([a-zA-Z0-9_-]+)/$ section.php?section=$1 

誰能幫我想出了一個解決方案,將很好地工作?謝謝你在前進,我真的什麼看起來似乎相對簡單的掙扎......

+0

請求某個部分網址時會發生什麼? – Gumbo 2010-07-29 20:19:36

+0

嗨Gumbo。該部分的網址會返回一個404,儘管在我的本地機器上很好,這讓我很不高興! – organdonor47 2010-07-29 20:35:58

回答

3

一是爲了迫使結束反斜槓,你需要做的其實重定向...

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ /article/$1/$2/ [R=302,L] 
RewriteRule ^section/([a-zA-Z0-9_-]+)$ /section/$1/ [R=302,L] 

注:我用302,因爲301可以在測試過程中有疼痛感,完成所有的工作,你喜歡它它更改爲301

剩下的兩個規則是簡單的面膜/別名QUERY_STRING的重寫網址,應該看起來像這樣...

RewriteRule ^article/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ /result.php?section=$1&url=$2 
RewriteRule ^section/([a-zA-Z0-9_-]+)/$ /section.php?section=$1 
+0

Cags - 非常感謝你的幫助!尾部的斜線問題已解決,但奇怪的是該部分規則在現場服務器上無效(在本地機器上正常)。那裏有什麼東西看起來不對,或者可以整理一下嗎? – organdonor47 2010-07-29 20:31:14

+0

我唯一真正的建議是檢查文章規則重定向到根目錄中的results.php頁面的URL,並且部分規則重定向到根目錄中的section.php。當你說它不起作用時,你會得到什麼? 404錯誤?如果是這樣,請在規則的末尾添加一個[R = 302]標誌,地址欄中的URL應該更改,希望錯誤會很明顯。 – 2010-07-29 20:38:48

+0

謝謝你的提示,這非常有用!所以現在我發現在活動服務器上重定向根本不起作用。在我的機器上,/ section/art /重定向到/section.php?section=art,而活動服務器上的鏈接僅轉到/ section/art /,不帶重定向。還有什麼我可以在這裏嘗試? – organdonor47 2010-07-29 20:49:37