Это не сработет если перед Apache стоит Nginx, который самостоятельно раздаёт статические файлы и не передаёт такие запросы на Apache. Ну и когда браузер клиента реферер не передаёт тож работать не будет.
xoxol4uk22: Помогите, пожалуйста. Пол дня убил, не умея я эти регулярные выражения понимать((
Простой редирект не работает. А вот этот не могу довести до ума:
В общем страницу site.ru/index.php?id_article=1 нужно на главную переадресовать...
Когда делаю вот так: ^index.php, то работает. А если добавляю окончание, то перестает. Думаю нужно символы кроме букв и цифр как-то экранировать, но не знаю как(( Пробовал их заменять точкой (она вроде универсальный символ), но тоже не работает
Добавлять в начало .htaccess выше остальных правил.
Если .htaccess в корне сайта.
Если .htaccess в папке /pics/.
Это не сработет если перед Apache стоит Nginx, который самостоятельно раздаёт статические файлы и не передаёт такие запросы на Apache. Ну и когда браузер клиента реферер не передаёт тож работать не будет.
Помогите, пожалуйста. Пол дня убил, не умея я эти регулярные выражения понимать((
Простой редирект не работает. А вот этот не могу довести до ума:
RewriteRule ^index.php?id_article=1$ http:/site.ru/ [R=301]
В общем страницу site.ru/index.php?id_article=1 нужно на главную переадресовать...
Когда делаю вот так: ^index.php, то работает. А если добавляю окончание, то перестает. Думаю нужно символы кроме букв и цифр как-то экранировать, но не знаю как(( Пробовал их заменять точкой (она вроде универсальный символ), но тоже не работает
https://habr.com/company/sprinthost/blog/129560/
RewriteRule передается не ссылка, а только путь до запрошенного файла.
GET параметры находятся в %{QUERY_STRING}.
RewriteCond %{QUERY_STRING} ^id_article=1$RewriteRule ^index\.php$ http://site.ru/? [R=301,L]
Ну и ставить выше остальных правил сразу после RewriteEngine On.
Можно ставить прямо в блоке server.
RewriteRule (.*)\?back=1$
Строка с которой работает RewriteRule не содержит GET параметры.
https://habr.com/company/sprinthost/blog/129560/
Метасимвол ^ соответствует началу строки.
Так тоже не сработало
Ну там же два разных режима работы: обычное строковое значение или регулярное выражение.
Т.е. если условие начинается с "~*", то всё что следом это регулярное выражение иначе это условие с обычным строковым значением.
map "$whitelist:$http_user_agent" $zakos_pod_good_bot {default 0;
~*^0:.*yahoo 1;
~*^0:.*yandex 1;
~*^0:.*google 1;
~*^0:.*msnbot 1;
~*^0:.*bingbot 1;
~*^0:.*mail 1;
}
Перед регулярным выражением ставится символ “~”, если при сравнении следует учитывать регистр символов, то ставятся символы “~*”.
Что-то похожее было пару месяцев назад /ru/forum/917580
Если есть доступ править httpd.conf, то для списка страниц удобнее rewritemap
RewriteMap доступен в контексте <VirtualHost>, а не .htaccess
Если без RewriteMap, то как-то так:
Попробуйте так:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /https?://site\.ru(/.*)?\ HTTP
RewriteRule ^.*$ https://site\.ru%1 [R=301,L]
Просто нужно внимательно и не спеша читать условие задачи. Там нет // перед site.ru
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /https:/site\.ru(/.*)?\ HTTPRewriteRule ^.*$ https://site\.ru%1 [R=301,L]
Или так