2014-01-16 96 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]