2014-01-16 5 views
0

У меня есть сайт SongsBar.com, когда запрос выполняется на моем сайте, URL-адрес в браузере отображается следующим образом: http://songsbar.com/download.php?q= {search text}. я хочу это быть выглядеть следующим образом http://songsbar.com/download/ {поиска текста} .htmlОчистка URL URL-адрес htaccess

+0

Я хочу, чтобы этот формат - http://songsbar.com/download/{search text} .html отображался прямо в адресной строке страницы результатов поиска. –

+0

, например, при поиске querry на mp3skull.com URL-адрес страницы результатов поиска выглядит следующим образом: http: // mp3skull/mp3/{search text} .html –

ответ

0

Во-первых, вам нужно убедиться, что Multiviews (mod_negotiation) выключен, в противном случае это будет бесполезно с файлами и /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 flag may не требуется. Это зависит от того, какие вещи вы планируете вставить в параметр. Флаг гарантирует, что специальные символы будут закодированы.

+0

sir, is r = 301 важен? –

+0

@ raps786 'R' сообщает mod_rewrite, чтобы перенаправить браузер извне, часть' = 301' делает его постоянной переадресацией. –

+0

это дает http://songsbar.com/download/{search text} .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] 
Смежные вопросы