2011-08-18 26 views
0

我在這個問題上,我想不通,我想使用mod_rewrite做到以下幾點:mod_rewrite的URL

http://localhost/The+Beatles 

http://localhost/artist.php?a=The+Beatles 

我已經試過下面就到這裏一些例子,其他網站和它tayloring我的需求,我想出了下面的,但它不工作:

RewriteEngine on 
RewriteRule ^(.*) artist.php?a=$1 

它似乎設置了一個變量,我似乎無法弄清楚artist.php?希望有人能幫忙。

戴夫

+0

這是什麼不完全工作? – Phil

+0

這不是解決了我試過的網址RewriteRule ^([az]/+)/?$ artist.php?a = $ 1這將工作,如果它是一個單一的字符串我認爲它有一個問題+話? – calabi

+0

(1)我最好說'重寫規則^(。*)artist.php?a = $ 1 [L]'(2)'mod_rewrite'通常不容易從fist go正確設置,所以使用'RewriteLog/tmp/rewrite.log' +'RewriteLogLevel 2',看看發生了什麼。 (3)如果這沒有幫助,請告訴我們您是否將規則放在服務器配置或「.htaccess」中? –

回答

1

你可以試試這套規則(改編自香草Zend框架項目)

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [L] 
RewriteRule ^(.*)$ artist.php?a=$1 [L,QSA] 

這將改寫爲不存在的文件的請求,你artists.php腳本,而離開正常的請求圖像,樣式表,JavaScript等。

在您的artist.php腳本中,您只需通過$_GET['a']變量訪問原始請求。

+0

以下嘿菲爾,試過這個,但我不能讓它沒有500 itnernal錯誤的工作,刪除除了最後一行和[L,QSA]的一切,它的工作原理和顯示我的頁面,但它說$ _GET ['a'] = artist.php ??不知道這是怎麼回事:(感謝您的時間 – calabi

+0

總是記錄500錯誤。你的錯誤日誌說什麼? – Phil

+0

日誌顯示[Thu Aug 18 23:48:34 2011] [alert] [client localhost]/var/www/.htaccess:RewriteLog不允許在這裏 – calabi