2014-01-16 137 views
0

我有一個網站SongsBar.com,當在我的網站上搜索查詢時,瀏覽器中的網址顯示如下 - http://songsbar.com/download.php?q= {search text}。 我希望它可以出現這樣http://songsbar.com/download/ {搜索文本}的.html乾淨的URL重定向htaccess

+0

我想要這種格式 - http://songsbar.com/download/{search text} .html出現在搜索結果頁面的地址欄中。 –

+0

例如當一個querry搜索上mp3skull.com搜索結果頁面的URL看起來像這樣 - HTTP:// mp3skull/MP3/{搜索文本} .HTML上 的RewriteCond% –

回答

0

首先,您需要確保Multiviews(mod_negotiation)已關閉,否則會混淆/download//download.php的東西。

然後,你需要外部重定向請求download.php

然後,你需要在內部重寫/download/請求到PHP文件(該瀏覽器是無視這種情況發生。

Options -Multiviews 

RewriteEngine On 

RewriteCond %{THE_REQUEST} \ /+download.php\?q=([^&\ ]+) 
RewriteRule^/download/%1.html? [L,R=301,NE] 

RewriteRule ^download/(.+)\.html$ /download.php?q=$1 [L,B,QSA] 

B國旗可能這不是必要的,它取決於你在參數中加入什麼樣的東西,該標誌確保特殊字符被編碼。

+0

sir,是r = 301很重要嗎? –

+0

@ raps786'R'告訴mod_rewrite外部重定向瀏覽器,'= 301'部分使它成爲一個永久的重定向。 –

+0

這是給http://songsbar.com/download/{search文字} .html,我想要的,但與404錯誤:(我只是複製這一切,粘貼在那裏 –

1

的.htaccess

RewriteEngine On 
    RewriteRule ^download/([^/]*)\.html$ /download.php?q=$1 [L] 
0

你可以做到這一點沿線的東西:

RewriteEngine On 
RewriteBase /download/ 
RewriteCond %{REQUEST_FILENAME} !-f #if the file actually exists don't rewrite 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)\.html$ /download.php?q=$1 [L]