- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте
Очень нужна оценка директив по перенаправлению в htaccess
Откликнувшимся заранее большое спасибо.
Задачи:
Чтоб соблюсти все требования перелопатил кучу страниц. Результат не очень.
Хостер подсказал решение (ниже). Но у меня сомнения, так htaccess для меня труден:
Оцените пожалуйста решение и универсальность его работы.
Заранее всем откликнувшися большое спасибо!
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://site.ru [R=301,L]
RewriteCond %{REQUEST_URI} !^/index\.html$ [NC]
RewriteRule ^(.*\.html)/$ $1 [R=301,L]
PS
До этого пробовал применять еще одно.
Но оно работает 50 на 50, хотя мне очень нравится
- не нужно прописывать домен
- комментарии к директивам, понятно что к чему
Еще раз спасибо!
#1
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
#2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html)\ HTTP/
RewriteRule ^index\.(php|html)$ http://site.ru/? [R=301,L]
#3,4
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)(?</)$ /$1/ [R=301,L]
RewriteRule ^(.+\.html)/+$ /$1 [R=301,L]
#1
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
#2
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html)\ HTTP/
RewriteRule ^index\.(php|html)$ http://site.ru/? [R=301,L]
#3,4
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)(?</)$ /$1/ [R=301,L]
RewriteRule ^(.+\.html)/+$ /$1 [R=301,L]
Спасибо.
Но предпоследняя строка (RewriteRule ^([^.]+)(?</)$ /$1/ [R=301,L])
Вызывает 500ю ошибку
:(
Почему так/можно ли это исправить?
Спасибо!
Спасибо.
Но предпоследняя строка (RewriteRule ^([^.]+)(?</)$ /$1/ [R=301,L])
Вызывает 500ю ошибку
Наверно автор хотел использовать т.н. утверждение "(?<!/)",
т.е проверку что последний символ перед этим утверждением не слеш
но возможно в Apache такой синтаксис регулярных выражений не поддерживается.
Можно воспользоваться таким вариантом добавления завершающего слеша если URL не содержит точки и не заканчивается слешем
RewriteRule ^([^.]+)([^./]+)$ /$0/ [R=301,L]
Да, (?</) исправьте на (?<!/)
но возможно в Apache такой синтаксис регулярных выражений не поддерживается.
поддерживается
Спасибо.
Но:
- при запросе site.ru/dir/txt.txt/ - кидает на 404
Хотя по идее стоит строка RewriteCond %{REQUEST_FILENAME} !-f
Пробовал добавить
- не помогло
😕
- при запросе site.ru/dir/txt.txt/ - кидает на 404
Хотя по идее стоит строка RewriteCond %{REQUEST_FILENAME} !-f
Правильно кидает
site.ru/dir/txt.txt/
это не файл, а папка
и такой папки у Вас нет !!!
А корректной обработки подобного URL в данном топике не показано
(есть только обработка URL типа "page.html/"),
да и у Вас в .htaccess очевидно тоже нет.
наверно для "site.ru/dir/txt.txt/" (да и для любого URL заканчивающегося на "имя_точка_расширение_слеш") должно быть что-то типа
RewriteRule ^(.*[^./]+\.[^./]+)/+$ /$1 [R=301,L]
Правильно кидает
site.ru/dir/txt.txt/
это не файл, а папка
и такой папки у Вас нет !!!
А корректной обработки подобного URL в данном топике не показано
(есть только обработка URL типа "page.html/"),
да и у Вас в .htaccess очевидно тоже нет.
наверно для "site.ru/dir/txt.txt/" (да и для любого URL заканчивающегося на "имя_точка_расширение_слеш") должно быть что-то типа
RewriteRule ^(.*[^./]+\.[^./]+)/+$ /$1 [R=301,L]
site.ru/dir/txt.txt = это как раз файл "txt.txt" (существующий)
нужно чтоб ссылка site.ru/dir/txt.txt/ редиректила на данный файл (site.ru/dir/txt.txt)
Извините, наверно я не очень конкретно описал:
"страницы и файлы page.html/ -> page.html" (написано 1м посте)
- тут про файлы и хотел написать
Попробовал добавить ваш пример
- по прежнему site.ru/dir/txt.txt/ - 404 ошибка
(site.ru/dir/txt.txt - открывает нормально)
:o:confused:
"страницы и файлы page.html/ -> page.html" (написано 1м посте)
- тут про файлы и хотел написать
RewriteRule ^(.+\.html)/+$
замените на
RewriteRule ^(.+\.[^/]+)/+$
Регулярка у gormarket тоже рабочая, так что если работать не будет, капайте htaccess или ищите проблему в настройках сервера
Спасибо большое.
Оказалось что хостинг виноват:
у него статический контент отдается nginx'ом, вне апача + nginx'a кеширует урл.
= получается что если даже вписать правильный код в хтаццесс он не сработает (отдаст кеш 404)
= результатов изменения приходится ждать 20-60минут!
Поэтому прошу siv1987
- можете выложить конечный вариант, рабочий, с всеми правками?
- потому как в попытках правок вроде я совершил ошибку
Сейчас код в хтассессе (на основе вашего первого +исправления)
все работает кроме одного:
http://www.site.ru/file/txt.txt/ -> http://site.ru/file/txt.txt (все правильно)
а когда без слеша в конце:
http://www.site.ru/file/txt.txt -> http://www.site.ru/file/txt.txt (нет перенаправления на без www)
- но с html страницами такого не происходит.
К сожалению проверить все варианты кода не получается из-за кеша и времени его ожидания
Большое человеческое спасибо!!!
PS
на основе данного топика пробовал кучу вариаций.
в результате запутался - вставлял правки по коду кажись не в те строчки
вот что пробовал (последние 2 строки):
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^./]+\.[^./]+)/+$ /$1 [R=301,L]
RewriteRule ^(.+\.html)/+$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^./]+\.[^./]+)/+$ /$1 [R=301,L]
RewriteRule ^(.+\.html)/+$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)(?<!/)$ /$1/ [R=301,L]
RewriteRule ^(.+\.[^/]+)/+$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^./]+\.[^./]+)/+$ /$1 [R=301,L]
RewriteRule ^(.+\.[^/]+)/+$ /$1 [R=301,L]