2011-10-05 46 views
1

我需要在我的網站上重寫一些特定的URL,但無法找到如何做,儘管搜索相當一段時間。Apache:如何重寫一些動態URL

需要匹配原始URL的格式如下: http://www.example.com/gallery/?level=picture&id=49

,我需要他們在這個格式: http://www.example.com/index.php?page=gallery&level=picture&id=49

然而,該文件夾還包含一些圖像文件以及。我需要任何URL直接指向圖像,並且任何指向php頁面的URL都將被重寫,如上所述。

我知道我想要做什麼,但不知道如何去做。基本上我需要在.htaccess中做到這一點:

if(url contains 'gallery/' AND filetype != bmp/jpg/png/etc){ 
REPLACE '/gallery/' WITH '/index.php?page=gallery&' AND append original query string variables 
} 

任何幫助都將不勝感激。

+0

有沒有人可以幫忙? –

回答

1

所以我找到了解決方案,爲我照顧這個問題。我現在在我的.htaccess文件中工作。

RewriteCond %{REQUEST_URI} !\.(bmp|jpg|jpeg|png|gif)$ 
RewriteRule ^gallery/$ /index.php?page=gallery [R=302,QSA] 

第一行(從我被告知),不包括被受此規則中列出的文件類型,因爲我原來提到的我不希望重寫圖像的URL。

第二行需要一個像這樣的網址: http://www.yoursite.com/gallery/?level=picture&id=52

,並把它在這: http://www.yoursite.com/index.php?page=gallery&level=picture&id=52

,並在離開原有的查詢字符串的地方,除了新的「頁面=畫廊「變量。它還會執行302重定向,以便用戶在其瀏覽器中顯示正確的地址。

不知道這是否對任何人都有幫助,但認爲自從我發佈這個問題後,我會發布我找到的解決方案。

0

這可能比您想要的更普遍一些,但它也會避免重寫其他現有文件。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^/gallery/(.+)$ index.php [QSA] 
+0

當你說「但它也會避免重寫其他現有文件」時,你究竟是什麼意思?此外,這個規則是否會匹配除圖片以外的所有文件的url? 此外,它不僅需要附加原始查詢字符串,而且還需要添加一個變量,如我的示例中所述。是否有可能在您的代碼的第二行index.php更改爲index.php?page = gallery,然後附加原始查詢字符串? –