1

Тема: Как заменить пробелы на дефис через .htaccess

Здравствуйте. Как заменить пробелы на дефис? сейчас у меня вот так показывает:
http://icefm.ru/searchmusic/Многоточие-Щемит%20в%20душе%тоска/?id=3

Re: Как заменить пробелы на дефис через .htaccess

Честно...не знаю sad

Re: Как заменить пробелы на дефис через .htaccess

RewriteRule ^(.+)(\s|%20)(.+)$ /$1-$3 [R=301,L]

Попробуйте.

Re: Как заменить пробелы на дефис через .htaccess

Kanra пишет:

Попробуйте.

Этот вариант проканает, если заменить надо не один пробел, а несколько? Смутные сомнения есть...

5 (13.09.2012 16:52 отредактировано Kanra)

Re: Как заменить пробелы на дефис через .htaccess

Да нет, вроде работает и при трех, проверил.  Можно еще так для надежности:

RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [R=301,L]  

p.s Я в регулярках полный ноль.

p.p.s Вот протестировал: _http://otaku-team.com/привет%20тест%20два%20три.html

6

Re: Как заменить пробелы на дефис через .htaccess

не хочет

7 (13.09.2012 19:48 отредактировано Kanra)

Re: Как заменить пробелы на дефис через .htaccess

Artyom91 пишет:

не хочет

Кто не хочет? Выкладывайте содержимое .htaccess.

RewriteEngine on
RewriteRule ^(.+)(\s|%20)(.+)$ /$1-$3 [R=301,L]

Вот так должно быть.

_http://otaku-team.com/searchmusic/Многоточие Щемит в душе тоска/?id=3

_http://otaku-team.com/searchmusic/Многоточие%20Щемит%20в%20душе%20тоска/?id=3

8 (13.09.2012 20:06 отредактировано Artyom91)

Re: Как заменить пробелы на дефис через .htaccess

DirectoryIndex index.php
RewriteEngine On
RewriteRule ^([^\s%20]+)(?:\s|%20)+(.*)$ /$1-$2 [R=301,L]

RewriteRule ^searchmusic/([^/]*)(/?)+$ index.php?do=vks&music=$1 [QSA,L]
RewriteRule ^audio/(.*)/(.*)/(.*).mp3?$ download.php?a=$1&b=$2&g=$3 [QSA,L]
RewriteRule ^saudio/(.*)/(.*)/(.*).mp3?$ download.php?x=$1&y=$2&g=$3 [QSA,L]

### START Определяем главное зеркало как site.ru (site.ru заменить на свой домен, например alaev.info)
RewriteCond %{HTTP_HOST} ^www\.icefm\.ru$ [NC]
RewriteRule ^(.*)$ http://icefm.ru/$1 [R=301,L]
### END Определяем главное зеркало
### START Редирект с первой страницы на основную
RewriteRule ^(.*)/page/1/$ $1/ [R=301,L]
RewriteRule ^(.*)page/1/$ $1/ [R=301,L]
### END Редирект с первой страницы на основную
RewriteBase /
RewriteRule ^(.*page/\d+/).+ /$1 [R=301,L]
# Редиректы
RewriteRule ^page/(.*)$ index.php?cstart=$1 [L]

http://icefm.ru/searchmusic/Многоточие-Щемит%20в%20душе%20тоска/?id=3

Посмотрите сами, войдите сюда http://icefm.ru/searchmusic/, наберите в поиске многоточие а там нажмите на любой трек.

Добавлено: 14-09-2012 03:30:41

понял походу, это при полном просмотре трека не хочет работать. Что делать?

9 (13.09.2012 21:02 отредактировано Kanra)

Re: Как заменить пробелы на дефис через .htaccess

В конец .htaccess поставить пробовали?

RewriteRule ^(.+)(\s|%20)(.+)$ /$1-$3 [R=301,L]

Т.е эта строчка в любом случае должна следовать за блоком:

RewriteRule ^searchmusic/([^/]*)(/?)+$ index.php?do=vks&music=$1 [QSA,L]
RewriteRule ^audio/(.*)/(.*)/(.*).mp3?$ download.php?a=$1&b=$2&g=$3 [QSA,L]
RewriteRule ^saudio/(.*)/(.*)/(.*).mp3?$ download.php?x=$1&y=$2&g=$3 [QSA,L]

Это очень важно.

10

Re: Как заменить пробелы на дефис через .htaccess

Поставил в конце файла, тоже самое.

11

Re: Как заменить пробелы на дефис через .htaccess

Ладно. Пойдем другой тропинкой. Давайте содержимое файла отвечающего за формирование урла трека.

12

Re: Как заменить пробелы на дефис через .htaccess

Kanra пишет:

Ладно. Пойдем другой тропинкой. Давайте содержимое файла отвечающего за формирование урла трека.

Тут один модульный файл. Я вам скину его содержимое на почту.

13

Re: Как заменить пробелы на дефис через .htaccess

Ох и плохо же знать php на уровне "спроси у гугла" и сделай также.

Найти:

    $val->artist =
preg_replace("/club[0-9]{2,15}/i","",$val->artist);

После вставить:

$val->title = preg_replace("#\%20#", "-", $val->title);
$val->artist = preg_replace("#\%20#", "-", $val->artist);

14

Re: Как заменить пробелы на дефис через .htaccess

ничего не изменилось

15

Re: Как заменить пробелы на дефис через .htaccess

Ладно, создаете тестовый доступ по фтп к папке где лежит файл модуля, будет минутка поэкспериментирую.

16

Re: Как заменить пробелы на дефис через .htaccess

Kanra пишет:

Ладно, создаете тестовый доступ по фтп к папке где лежит файл модуля, будет минутка поэкспериментирую.

Отправил

17

Re: Как заменить пробелы на дефис через .htaccess

Вроде что-то получилось. Но будет работать только с новым поиском. Также нужно почистить кэш старого поиска.

Добавлено: 14-09-2012 11:05:18

http://icefm.ru/searchmusic/весна

18 (14.09.2012 12:37 отредактировано Artyom91)

Re: Как заменить пробелы на дефис через .htaccess

спасибо большое, работает. Гляньте пожалуйста как будет минутка, мне нужно что бы треки которые выводятся в Последние запросы была через запятую, что бы хоть как-то их отделять, эти запросы находятся в файле zapros.txt ( в корне сайта ) и записываются через скрипт.


P.S.: Эм, когда в поиске вводишь что нибудь и где список результатов пробел не обрабатывается

Добавлено: 14-09-2012 19:55:47

А там вот где поисковые запросы эти выводятся, нельзя сделать что бы дефис пробелом был ? )))

19

Re: Как заменить пробелы на дефис через .htaccess

Artyom91 пишет:

Эм, когда в поиске вводишь что нибудь и где список результатов пробел не обрабатывается

Могу лишь наводку дать, как мне кажется нужно через js заменить пробелы тут:

onclick="window.location.href='/searchmusic/'+$('#i_search').val();return false;"

Но разбираться в этом времени как-то нет, покурите сами маны по замене текста через js.

Artyom91 пишет:

А там вот где поисковые запросы эти выводятся, нельзя сделать что бы дефис пробелом был ? )))

В смысле чтобы ссылки были с пробелами? Тогда если вы по ним перейдете, то они тоже будут с пробелами, это же не RewriteRule, которое делает замену по факту запроса.

20

Re: Как заменить пробелы на дефис через .htaccess

Большое спасибо за помощь )