2013-01-10 52 views
1

我正在嘗試對我的電子商務網站進行一些改進以獲得更好的搜索引擎優化。其中一個更重要的事情是設置爲不使用舊的產品:ModRewrite - 如何爲SEO目的配置mod_rewrite的.htaccess

/detail.php?pid=367

相反,我們已經建立了8個頂級類別有3個子類下面各8頂級貓。

因此,例如,這些類別的人會像thisL

/安全櫃,流體搬運/流體鼓車/

現在我想要做的是有以下文件夾這些類別內的每個產品。如:

/安全櫃,流體搬運/流體鼓車/ Lubrigard處理-車/

我的想法是可能是最好的辦法是在結尾的產品ID ,所以這將是這樣的:

/安全櫃,流體搬運/流體鼓車/ Lubrigard處理-車/ 856

這是否有道理?在這種情況下,我會在.htaccess中放入什麼?

強大的文本

回答

1

爲圖案的ID發現,而不是在URL結構,這是正常的方法,你可以有任何URL結構爲長。

在你的問題中,模式可能是ID是數字的事實,所以它可以從任何保存它的URL中捕獲,而不管它的結構如何。例如:

http://example.com/cat1/cat2/ID/cat3

http://example.com/cat2/ID/cat3/cat1

使得對於在任何位置捕捉的數字串的規則,像這樣的沒有區別:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} /([\d]+)/? 
RewriteRule .* detail.php?pid=%1 [L,QSA] 

它將默默地傳遞ID在傳入的腳本URL中,如下所示:

http://example.com/detail.php?pid=ID

當然,在URL中的ID之前不能有任何其他數字字符串。

但是,如果你仍然希望被固定在URL中的最後一個位置ID,只需更換上述規則與這一個設定:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} .*/([0-9]+)/?$ 
RewriteRule .* detail.php?pid=%1 [L,QSA] 
+0

看起來不錯,和我試圖實現,幾個問題。 1)什麼是[L,QSA]? 2)這似乎是其唯一考慮在這一塊的最後一個數字: 的RewriteCond%{REQUEST_URI} *([\ d] +)/ $ 我的電話號碼的範圍是從1到最多3000 –

+0

'? QSA'是Query String Append標誌,它執行規則中添加查詢字符串時的內容。'([\ d] +)中的'+'表示必須至少有1位數,沒有最大值。然後,1到3000範圍內的所有數字都與條件匹配。 –

+0

那麼,由於某種原因,它不工作。它只取最後一位數字。 –