2014-03-03 28 views
0

重寫因此,我正在調整我正在處理的網站上的網址,並且在網址中傳遞了一些變量時遇到了一些問題。.htaccess |用頁面

mylighting.com/bath-fixture-c-13.html?osCsid=u2qj8o9rvjn0p5pa7p8npuhs54 
RewriteRule ^bath-fixture bath-fixture-c-13.html?id=$1 

所以這個重寫完美的作品爲出現的頁面是mylighting.com/bath-fixture

現在不幸的頁面上還有其他幾個項目來查看和我有一些麻煩的頁面變量。我認爲我的代碼是正確的,但是每次我嘗試去正確的頁面時,它似乎都不起作用。

http://mylighting.com/bath-fixture-c-13.html?page=2&id=u0hnumfus6gjhjc45av36663m3 
RewriteRule ^bath-fixture/([a-zA-Z0-9]+)$ bath-fixture-c-13.html?page=$1&id=$2 

所以我認爲我有這個正確的,但顯然不是。我希望第二頁的輸出爲 mylighting.com/bath-fixture/2

不幸的是,使用.htaccess中的代碼時,每次輸入該URL時,都會將我帶到類別的第一頁,而不是第二頁。

+0

什麼是您想要在瀏覽器中看到的URL以及您想要在內部重寫的內容? – anubhava

+0

我想在瀏覽器中看到mylighting.com/bath-fixture/2作爲輸出。 –

+0

根據您的意見以及上述陳述,您希望使用mylighting.com/bath-fixture/2作爲輸入,並具有mylighting.com/bath-fixture-c-13.html?id=服務的內容,沒有重定向。 – AaronM

回答

0

看來你錯誤地理解了RewriteRule的格式。第一個是偶然工作。

RewriteCond %{QUERY_STRING} page=([0-9]+) 
RewriteRule ^bath-fixture-c-13.html bath-fixture/%1 [R=301,QSA,L] 
RewriteRule ^bath-fixture-c-13.html bath-fixture/ [R=301,QSA,L] 

RewriteRule的第一個參數是與請求的URL匹配的正則表達式。第二個參數是要作爲重定向發送給用戶的URL,因此它們最終會在您所需的URL上。因爲你想解析QUERY_STRING我相信你需要使用RewriteCond。如果你這樣做的SEO目的不要忘記添加[R = 301]。

http://httpd.apache.org/docs/current/mod/mod_rewrite.html

如果你試圖去另一個方向,那麼你需要以下內容。

RewriteRule ^bath-fixture/$ bath-fixture-c-13.html [QSA,L] 
RewriteRule ^bath-fixture/([0-9]+) bath-fixture-c-13.html?page=$1 [QSA,L] 

如果你能澄清你想要的輸入和輸出,你將得到更快的正確答案。

+0

我現在有點困惑,因爲添加了你指定的參數之後。我回到了開頭,現在URL不起作用。 –

+0

也許你的問題有點混亂。目前還不清楚您是否嘗試從http://mylighting.com/bath-fixture-c-13.html?page=2&id=u0hnumfus6gjhjc45av36663m3輸入http://mylighting.com/bath-fixture/2或相反亦然。上面的規則是從複雜輸入到簡單輸出的這個方向。但是,如果您試圖從簡單的用戶請求到複雜的內部路徑,它們會倒退。 – AaronM

+0

因爲它是這樣的URLS輸出:mylighting.com/bath-fixture-c-13.html?id=Qsd443553213Dg,我將它們轉換爲mylighting.com/bath-fixture。我遇到的問題不是與第一個實例,但與此實例的網址是:mylighting.com/bath-fixture-c-13.html?page=2&id=!sd556344778545Dg和Im試圖將其轉換爲mylighting。 com/bath-fixture/2 –