2012-10-26 46 views
0

可能重複:
Rewriting an arbitrary number of path segments to query parameters用PHP參數替換URL/gallery/art/paris?

我敢肯定,這已被問了很多次,但我真的不知道它是什麼我在尋找,因此,如果有人能只要將我指向一個精彩的地方即可。

基本上,我有一個頁面「gallery.php」,它目前從目錄加載圖像(第一部分是硬編碼),然後在你要輸入的網址?a = art/paris,所以完整的URL是gallery.php?a=art/gallery

有沒有一種方法可以修改Apache和/或我的PHP代碼,這樣用戶可以輸入/gallery/art/paris//gallery/art/paris並得到相同的結果? (任何後/畫廊/是一個參數,我需要

回答

3

嘗試把這個在你的的.htaccess:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-F 

RewriteRule ^gallery/([a-z-A-Z0-9\/]+)$ /gallery.php?a=$1 [NC] 
+0

這幾乎是我所需要的,但它不適用於/藝術/巴黎。它只傳遞/ art作爲參數。我需要它通過/藝術/巴黎作爲參數。 – THEK

+0

你很棒。非常感謝你! – THEK

+0

(1)這三個RewriteCond使其變得更慢並且不必要。 (2)它也會導致/ art/gallery/foo/bar/temp/test /不管什麼也可以工作。 (3)與此相關的許多重複內容問題。 –

0

這是你想找的

RewriteEngine on 
RewriteRule ^gallery/([^/\.]+) gallery.php?a=$1 [L] 

,或者你能更具體:?

RewriteEngine on 
RewriteRule ^gallery/([^/\.]+)/([^/\.]+) gallery.php?a=$1&b=$2 [L] 
1

是的,是有辦法做到這一點,你需要的是mod_rewrite我。在你的Apache服務器上安裝並激活。然後創建一個.htaccess文件,您可以在其中「告訴」Apache重寫哪些URL並指定規則如何完成。所以基本上你需要這樣的東西

RewriteEngine On 
RewriteBase/
RewriteRule ^gallery/([^/\.]+)/([^/\.]+)$ gallery.php?a=$1/$2 [L,NC]