2013-06-23 103 views
0

我有以下網址:URL重寫失敗

http://mysite.com/tracks/backing-track-search?artist=TINA-TURNER&action=search&listArtist=true 

,我想閱讀:

http://mysite.com/tracks/backing-track-search/TINA-TURNER 

這就是我想,但它只是需要我http://mysite.com/tracks/backing-track-search沒有任何的GET變量

RewriteRule ^(tracks)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1/$2?artist=$3&action=$4&listArtist=$5 [QSA,L] 

這是可能的,或者我必須包括URL中的變量是否也是和listArtist? (我大概可以加以標示,如果他們不存在在PHP文件,但多數民衆贊成容易)

我也試過,它失敗:

http://mysite.com/tracks/backing-track-search/TINA-TURNER/search/true 

編輯我想可能會有一些困惑,是我的錯...

在原來的URL

http://mysite.com/tracks/backing-track-search?artist=TINA-TURNER&action=search&listArtist=true 

通知

...backing-track-search?artist... 

backing-track-search實際上是一個文件,backing-track-search.html不是一個目錄 - 我只是離開了。html的,因爲我有一個規則寫在.htaccess文件

+0

去'/音軌/後備跟蹤搜索/ TINA-特納/搜索/ true'適用於我將該規則放入我的htaccess文件中 –

+0

URL/backing-track-search /總是在URL中嗎? –

+0

@JonLin - 它不拉動變量使用$ _GET [] –

回答

1

如果您在.htaccess這樣做呢?

RewriteRule ^backing-track-search/([^/]+) /tracks/backing-track-search.html?artist=$1&action=search&listArtist=true&%{QUERY_STRING} [L] 

然後使用

http://mysite.com/backing-track-search/TINA-TURNER 
+0

再次感謝,同樣的問題,沒有拿起變量 - 例如嘗試回聲$ _GET ['行動'],它什麼也沒做,最後在[QSA,L]嘗試 –

+0

是否打開了URL重寫?更新答案以確保其正確。 –

+0

是的,它絕對是 –

0

我看到$_GET所有3個變量,當我在/tracks/backing-track-search創建一個PHP腳本,使用你的第二個規則,在我的文檔根目錄的空白htaccess文件。

這裏可能會發生的事情是,只需要/tracks/backing-track-search/something-something即刻運行腳本,所以沒有任何重寫(尤其是如果您使用的條件如RewriteCond %{REQUEST_FILENAME} !-f!-d)。然後腳本的PATH INFO以其中的/something-something結束。您可以嘗試重命名URL到不同的東西,如:

http://mysite.com/tracks/backing-track/TINA-TURNER/search/true 

那麼你的規則是:

RewriteRule ^tracks/backing-track/([^/]+)/([^/]+)/([^/]+)/?$ /tracks/backing-track-search?artist=$1&action=$2&listArtist=$3 [QSA,L] 
+0

已更新的問題,有一些希望現在已經清理的混亂。 –