2009-09-28 45 views
1

我有一個名爲category.php5的頁面,它使用$ _GET [「category」]從數據庫中獲取正確的內容。我想漂亮起來所以看起來像:.htaccess mod_rewrite問題 - 在腳下自己拍攝?

sinaesthesia.co.uk/category/psoriasis

這將等於:

sinaesthesia.co.uk/category.php5?category=psoriasis

我之前已經成功完成了這種重寫,但由於我現在無法完成這項工作,我擔心我可能會制定某些規則,這些規則會以某種方式搞砸我。這裏是我的整個.htaccess文件 - 最後的幾行應該做上述改寫:

RewriteEngine On 

#remember to change this to aromaclear 
RewriteCond %{HTTP_HOST} !^sinaesthesia\.co.uk$ [NC] 
RewriteRule ^(.*)$ http://sinaesthesia.co.uk/$1 [R=301,L] 

#Translate default page to root 
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|html)\ HTTP 
RewriteRule ^(.*)index\.(php5|html)$ /$1 [R=301,L] 

#translate any .html ending into .php5 
RewriteRule ^(.*)\.html$ /$1\.php5 

#change/for ? 
RewriteRule ^(.*)\.html/(.*)$ /$1\.html?$2 

#strip .html from search res page 
RewriteRule ^(.*)search/(.*)$ /$1search_results\.html/search=$2 

#translate product details link from search res page 
RewriteRule ^products/(.*)/(.*)/(.*)$ /product_details.php5?category=$1&title=$2&id=$3 [L] 

#Translate products/psorisis/chamomile-skin-cream-P[x] to productview.php5?id=1 
RewriteRule ^products/.*-P([0-9]+) /productview.php5?id=$1 [L] 

#Translate /category/psoriasis to /category.php5?category=$1 
RewriteRule ^category/(.*) /category.php5?category=$1 [L] 

當我手動輸入category.php5 /類別=牛皮癬,它的偉大工程。當我輸入category.php5/category /牛皮癬時,它不會。我擔心我的行改變了HTML/HTML?是一個錯誤,但是當我把這條線路出來時,它仍然不起作用。其他一切按預期工作。

+0

是否應用該URL中的任何規則? – Gumbo 2009-09-28 19:51:01

+0

不是我所知道的 - 我獲得了404狀態。 – user97410 2009-09-28 20:17:53

回答

0

啊:因爲我有一個名爲category.php5的文件,我試圖使用類別/牛皮癬,服務器試圖解決這個問題,因爲category.php5 /牛皮癬,失敗。現在修復它!

1

作爲一般策略,通過註釋掉所有內容,然後重新啓用所有內容,直到找到導致它崩潰的規則爲止。

請記住,瀏覽器有時會緩存重定向,因此啓動全新的瀏覽器實例是個不錯的主意。一個有用的服務是http://web-sniffer.net/,它會給你一個未緩存的結果。

一般來說,看看你的一組重定向,這似乎有點複雜,因爲你似乎正在使用鏈/篩型系統。相反,我建議從可以專門識別的URL開始,例如開始

RewriteRule ^category/(.*) /category.php5?category=$1 [L] 

,然後離開相當混亂的.html => .PHP轉換的東西接近尾聲,如果你最終需要它。我做了很多使用重定向的網站,並且從來不需要像那樣的通用轉換,所以它們應該是可以避免的。

還要記住。*表示匹配任何東西或者什麼也沒有,所以你可能想用。+來代替。

+0

謝謝,那裏有很好的建議。我會去做這件事並回復你 - 特別是。+是一個非常好的主意。 – user97410 2009-09-29 12:39:39

+0

好的,我試圖剝離文件下降到只有 #Translate /類別/牛皮癬/category.php5?category=psoriasis 重寫規則^類別/(.+)$ /category.php5?category=$1 [L] 和也試過,以防萬一 #Translate /類別/牛皮癬/category.php5?category=psoriasis 重寫規則^(+)類別/(.+)$ /$1category.php5?category=$2 [L ] 它不會工作。這是一個簡單的規則! – user97410 2009-09-29 13:20:02