Вот например deny from IP из верхнего .htaccess работает и так
Работает ровно до тех пор, пока где-то ниже уровнем не встретися другой набор правил deny/allow.Как только в /www/site1/.htaccess будут свои правила deny/allow, то набор правил deny/allow из /www/.htaccess перестанет работать.С mod_rewrite всё аналогично.В /www/site1/.htaccess уже есть какие-то RewriteRule для вашей CMS, так что из /www/.htaccess правила RewriteRule работать не будут.Добавление RewriteOptions в /www/.htaccess будет влиять на все дочерние папки.Например:/www/.htaccess/www/site1/.htaccess/www/site1/folder/.htaccessВо всех есть свои RewriteRule. Если был запрос к /folder/, то будут объединены правила из всех трёх файлов.Правила в /www/site1/.htaccess и /www/site1/folder/.htaccess могут быть не расчитаны на такую совместную работу и возможен конфликт правил.
Так вот, почему-то это правило (например то которое подсказали вначале) в общем файле не срабатывает, а если записать конкретно в .htaccess сайта, то работает.
Дмитрий :
Редирект со всех страниц отрабатывает, НО почему то редиректит и robots.txt с /sitemap_index.xml , которые по идее не дожны редиректится так как прописаны в RewriteCond
Как на самом деле работает mod_rewrite.
Изменение запроса не заканчивается на последнем RewriteRule. После того, как сработало последнее правило RewriteRule и был добавлен RewriteBase, mod_rewrite смотрит, изменился запрос или нет. Если запрос изменился, его обработка начинается заново с начала .htaccess.
RewriteRule . /index.php [L]
Это правило изменит запрос /robots.txt на /index.php и обработка начнётся заново.В %{REQUEST_URI} будет /index.php и теперь сработает правило:RewriteCond %{REQUEST_URI} !^/($|wp-admin|wp-login\.php|robots\.txt)RewriteRule ^(.*)$ https://site.com/ [R=301,L]Достаточно добавить проверку переменной %{ENV:REDIRECT_STATUS}. Там сохраняется статус предыдущего перенаправления и при первом проходе там пусто.
RewriteCond %{ENV:REDIRECT_STATUS} ^$RewriteCond %{REQUEST_URI} !^/($|wp-admin|wp-login\.php|robots\.txt|sitemap(|_index)\.xml)RewriteRule ^(.*)$ https://site.com/ [R=301,L]
Ещё вариант вместо %{REQUEST_URI} использовать %{THE_REQUEST}. Её содержимое не меняется при перенаправлении.
Там строка HTTP-запроса "GET /path?query HTTP/1.1".
RewriteCond %{THE_REQUEST} "!^\S+ /([? ]|wp-admin|wp-login\.php|robots\.txt|sitemap(|_index)\.xml)"RewriteRule ^(.*)$ https://site.com/ [R=301,L]
RewriteEngine OnRewriteCond %{REMOTE_ADDR} =11.22.33.44RewriteRule ^a/b/c/$ - [R=404,L]
Здраствуйте.
В логах вылезли страницы с 404 ошибкой такого вида:
https: //site.ru/statiay/smarta_sumka _ belaya/www.tns-counter.ru/V13a****ar_ru/ru/UTF-8/tmsec=1021689_771724-3854277/7995618670995888828
https: //site.ru/statiay/ruchka_dilun _ fertyyne/www.tns-counter.ru/V13a****ar_ru/ru/UTF-8/tmsec=1021689_771724-3854277/6524891211361101840
https: //site.ru/statiay/depesha_dedilun _ yug/www.tns-counter.ru/V13a****ar_ru/ru/UTF-8/tmsec=1021689_771724-3854277/6743298988707820364
Подскажите, как сделать 301 редирект (.htaccess) чтобы страницы с 404 ошибкой перенаправлялись на оригинальные страницы без www.tns-counter.ru/V13a****ar_ru/ru/UTF-8/tmsec=1021689_771724-3854277/7995618670995888828 :
https: //site.ru/statiay/smarta_sumka _ belaya/
https: //site.ru/statiay/ruchka_dilun _ fertyyne/
https: //site.ru/statiay/depesha_dedilun _ yug/
RewriteRule ^(.+/)www\.tns-counter\.ru /$1 [R=301,L]
<a(?=[^>]*\sid="download")(?=[^>]*\shref="([^"]*)")
https://regex101.com/r/hXMzLh/1
Ещё вариант.
<a(?:\shref="([^"]*)"|\sid="download"()|[^>])++\2
При срабатывании "Deny From" клиент получает ошибку 403.Свою страницу ошибки можно указать с помощью ErrorDocument.
Т.е. если указать адрес с http:// или https://, то клиент получит не 403, а редирект 302.
ErrorDocument 403 http://domain/page
такая конструкция:
Redirect 301 /stanki$ https://site.ru/stanki.php
не срабатывает
С регулярками работает RedirectMatch
RedirectMatch 301 ^/stanki$ https://site.ru/stanki.php
Спасибо, в обоих случаях редиректит на /cat/29?cat_id=29
Значит где-то есть правило, которое добавляет этот "?cat_id=".
RewriteRule ^(cat/\d+)/ /$1 [R=301,L]
Это правило нужно поставить в начало файла .htaccess чтобы оно срабатывало раньше правила добавляющего "?cat_id=".
Перед проверкой не забыть сбросить кеш браузера.