jkm

Рейтинг
120
Регистрация
20.02.2014


RewriteCond %{QUERY_STRING} =t=190&PAGEN_1=10 [OR]
RewriteCond %{QUERY_STRING} =PAGEN_1=10&t=190
RewriteRule ^rezultaty/$ /$0?PAGEN_1=10 [R=301,L]

Или


RewriteCond %{QUERY_STRING} (?:^|&)t=190(?:&|$)
RewriteCond %{QUERY_STRING} (?:^|&)(PAGEN_1=10)(?:&|$)
RewriteRule ^rezultaty/$ /$0?%1 [R=301,L]
vaf76:
Подредактировал движок сайта, убрав из материала id материала, в результате чего все ссылки типа
http://site.ru/shkafy-kupe/107-shkaf-kupe-radiusnyj.html
http://site.ru/prikhozhie/127-prikhozhaya-tatyana.html
и т.д. (всего несколько тысяч подобных страниц)

теперь приобрели вид
http://site.ru/shkafy-kupe/shkaf-kupe-radiusnyj.html
http://site.ru/prikhozhie/prikhozhaya-tatyana.html

RewriteRule ^([^/]+/)\d+-([^/]+\.html)$ /$1$2 [R=301,L]

.htaccess в папке folder.


RewriteEngine On

RewriteCond %{DOCUMENT_ROOT}/folder/$1.php -f
RewriteRule ^(.+)/$ $1.php [L]
yet_warm:
Стопудово, первая трезвая мысль - без гита нефик и дергаться, ну не в топике ж тут pull requestы кидать?

Ага, прям тут и накидаем.


string pattern = @"(value=....)";
Regex regex = new Regex(pattern);

// Достигаем того же результата что и в предыдущем примере,
// используя метод Regex.Matches() возвращающий MatchCollection
foreach (Match match in regex.Matches(input))
{
Console.WriteLine(match.Groups[1].Value);
}

Сократить этот кусок до одной строки:


Console.WriteLine(Regex.Match(input, @"value=""(\d+)").Groups[1].Value);
ТП2:
Redirect 301 /index.php?option=com_content&view=article&id=6&Itemid=17 http://www.ivsatin.ru/tekhnologiya.html

Тут используется шаблон с GET параметрами и директива Redirect, которая относится к mod_dir.

Проблема в том, что mod_dir сравнивает с шаблоном только /path, а не весь /path?query.

Средствами mod_rewrite это можно сделать так


RewriteEngine On

RewriteCond %{THE_REQUEST} " /index\.php\?option=com_content&view=article&id=6&Itemid=17 "
RewriteRule ^ http://www.ivsatin.ru/tekhnologiya.html? [R=301,L]

или так


RewriteEngine On

RewriteCond %{QUERY_STRING} =option=com_content&view=article&id=6&Itemid=17
RewriteRule ^index\.php$ http://www.ivsatin.ru/tekhnologiya.html? [R=301,L]

Ну и ставить это выше остальных RewriteCond и RewriteRule.


RewriteCond %{THE_REQUEST} " /question\.php\?page=(\d+)"
RewriteRule ^question\.php$ /question-%1.html? [R=301,L]

RewriteRule ^question-([0-9]+)\.html$ /question.php?page=$1 [L]

Или так


RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^page=(\d+)
RewriteRule ^question\.php$ /question-%1.html? [R=301,L]

RewriteRule ^question-([0-9]+)\.html$ /question.php?page=$1 [L]

RewriteEngine On

RewriteRule ^([^.]+)$ /$1.html [L,R=301]

rupixel, для исключения index.htm можно добавить в шаблон негативную опережающую проверку (?!index\.htm).


RedirectMatch 301 ^/(?!index\.htm).+\.htm$ $0l

RewriteRule ^(?!index\.htm).+\.htm$ /$0l [R=301,L]

Или добавить дополнительный RewriteCond.


RewriteCond %{REQUEST_URI} !^/index.htm
RewriteRule ^.+\.htm$ /$0l [R=301,L]
Эдуардoff:
но не работает
Redirect 301 /старая%20ссылка/ httр://мой.сайт/новая-ссылка/
как решается такая проблема?


Redirect 301 "/старая ссылка/" httр://мой.сайт/новая-ссылка/

Или


RewriteEngine On
RewriteRule "^старая ссылка/" httр://мой.сайт/новая-ссылка/ [R=301,L]
rupixel:
Нужно редиректить все только урлы с сайта которые заканчиваться на .htm и редиректить на тот же урл, только на .html
Как правильно написать ?


RedirectMatch 301 ^.+\.htm$ $0l

Или


RewriteEngine On
RewriteRule ^.+\.htm$ /$0l [R=301,L]

Если использовать флаг QSA, то пренаправление будет с ?a=b на ?metka=0&a=b


RewriteCond %{QUERY_STRING} !(^|&)metka=
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/category/
RewriteRule ^.*$ /$0?metka=0 [R=301,L,QSA]

Если нужно с ?a=b на ?a=b&metka=0


RewriteCond %{QUERY_STRING} !(^|&)metka=
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_URI} !^/category/
RewriteCond %{QUERY_STRING}&metka=0 &*(.+)
RewriteRule ^.*$ /$0?%1 [R=301,L]

$text = '<div id="block" class="block">Текст "содержащий" кавычки.</div>';

$text = preg_replace('/<[a-z][^>]*>(*SKIP)(?!)| "/i', ' «', $text);
$text = preg_replace('/<[a-z][^>]*>(*SKIP)(?!)|"[ .,;:]/i', '» ', $text);
Всего: 750