jkm

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


RewriteCond %{THE_REQUEST} \\x22,
RewriteRule ^ noimage.jpg [L]

Метасимвол ^ совпадает в начале строки. Нужно или убрать его или добавить (?:tag|archive|2014)/ или [^/]+/.


RewriteRule /content-page/$ /content-page.html? [R=301,L]

RewriteRule ^[^/]+/content-page/$ /content-page.html? [R=301,L]

RewriteRule ^(?:tag|2014|archive)/content-page/$ /content-page.html? [R=301,L]
Lucentezza:
К сожалению, такая конструкция не работает, все равно код 200

Может, ставили в конец файла. После RewriteRule .* index.php [L] это уже работать не будет.

Попробуйте ставить в начало файла сразу после RewriteEngine On

Lucentezza:
Всем добрый день!
Знатоки, подскажите, плиз, можно ли настроить через .htaccess редирект по маске для всех запросов к сайту, содержащих, например, слово Database, на доступ запрещен или отправлять на главную страницу?
Пример, запроса, который требуется блокировать: "GET / HTTP/1.1 "}__test|O:21:\x22JDatabaseDriverMysqli\x22....."

Редирект на главную страницу


RewriteCond %{HTTP_USER_AGENT} Database
RewriteRule ^ /? [R=301,L]

Ошибка 403 "Доступ запрещен"


RewriteCond %{HTTP_USER_AGENT} Database
RewriteRule ^ - [F,L]


RewriteCond %{THE_REQUEST} " /images/\?v=2012-08-25_rq4wrmeadhxu3mf6y5qlijngc.png "
RewriteRule ^ /images/index.php [R=301,L]

Или так


RewriteCond %{QUERY_STRING} =v=2012-08-25_rq4wrmeadhxu3mf6y5qlijngc.png
RewriteRule ^images/$ /$0index.php [R=301,L]
drema87:
Редирект не срабатывае, а в адресной строке формируется такой урл:
http://сайт.ru/урл/?a=урл2/pages/id_12

Но ведь там отчетливо видно, что редирект срабатывает.

В адресной строке как раз http://сайт.ru/урл/ только с добавлением лишних параметров "?a=урл2/pages/id_12".

Такое происходит при одновременной работе mod_alias и mod_rewrite.

Т.е. в правилах у вас как-то так


Redirect 301 /урл2/pages/id_12 http://сайт.ru/урл/

RewriteRule (.*) index.php?a=$1 [L]

К тому времени как mod_alias будет выполнять редирект на http://сайт.ru/урл/ mod_rewrite уже выполнит RewriteRule и допишет лишние параметры "?a=урл2/pages/id_12".

Поэтому тут лучше обойтись без mod_alias и делать редирект средствами mod_rewrite.


RewriteRule ^урл2/pages/id_12$ http://сайт.ru/урл/ [R=301,L]

Ну и ставить его выше других правил сразу после RewriteEngine On

Zenks:
Добрый день, друзья!

Возникла, небольшая сложность по 301 редиректу.
Мы имеем сайт доступный по адресам:
http://site.com
http://www.site.com
https://site.com
https://www.site.com

Задача, сделать основным только https://site.com, а со всех остальных 301 редирект на главный.

Пробовал через htaccess, различные варианты:

Redirect 301 / https://site.com

ERR_TOO_MANY_REDIRECTS


RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

ERR_TOO_MANY_REDIRECTS


RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

ERR_TOO_MANY_REDIRECTS


Прошу помощи,кто силен в htaccess, подсказать, спасибо.

Возможно, там перед Apache другой сервер принимает поключение по обоим протоколам, а на Apache проксирует запрос уже только по HTTP.

Тогда обычно добавляется заголовок X-Forwarded-Proto или X-Forwarded-SSL


RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC,OR]
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^(.*)$ https://site.com/$1 [R=301,L]
Samail:
Нужно что-бы по ссылкам начинающимся на /index.php?option=com_content&task=view&id= открывались страницы http://site.ru/index.php/'то что после id='
То есть /index.php?option=com_content&task=view&id=166&Itemid=44 должно отправлять на http://site.ru/index.php/166&Itemid=44


RewriteCond %{THE_REQUEST} " /index.php\?option=com_content&task=view&id=(\S+) "
RewriteRule ^ http://site.ru/index.php/%1? [R=301,L]
ps axf:
попытался правильно обрабатывать одинарные и двойные кавычки т.е. src="qq ' w w" и src='qq"w w'

небольшой вопрос: а можно ли передать "захваченный текст" из первой части выражения во вторую, в ту которая идет после \G ?

Если так важны кавычки, то в этом случае удобнее всё-таки preg_replace_callback. Можно целиком захватить строку в кавычках

(['"]).*?\1

или

('[^']*'|"[^"]*")

И далее внутри callback функции обрабатывать как захочешь.

ps axf:
"в лоб" заменить не получится. вариант с использованием preg_replace_callback

Да ладно :)


$txt = <<<EOF
в последовательностях вида src="qqq www ee" и href="fewfwe e fe" и заменяет
src="jhbgsc sdhjgsj hgj"
EOF;

$txt = preg_replace('%(?:src|href)="[^ "]*\K |\G(?!\A)[^ "]*\K %i', '_', $txt);
echo $txt;

https://regex101.com/r/gD1sF8/1

Всего: 749