- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
День добрый! Прошу помощи, уважаемые!
Есть старенький сайт без ЧПУ, урлы вида GET передачи переменных index.php?name=Pages&op=cat............. и т.д. В выдаче гугла большая каша из несуществующих страниц с добавлением несуществующих параметров.
Прописал строчку:
ErrorDocument 404 /404.html
Однако при добавлении аброкадабры к существующей ссылке, открывается страница с последним действующим параметром идя по переменным справа на лево. Например урл:
http://site.ru/index.php?name=Pages&op=cat
и к нему добавить следующее
http://site.ru/index.php?name=Pages&op=catывавыаываыва
то в строке браузера останется данный урл, и откроется страница с содержанием
http://site.ru/index.php?name=Pages&op=cat
Если http://site.ru/index.php?name=Pages&op=cappppppp , то т.к. переменная cat была нарушена урл в строке браузера остается такой же, а выдается содержимое страницы http://site.ru/index.php?name=Pages
Если http://site.ru/index.phываыва (нарушена главная страница), то в строке браузера остается данный урл, а содержимое выдается файла 404 ошибки.
Вопрос: Что нужно прописать, что бы при несуществующих страницах отдавалась страница с ошибкой 404 и как поставить запрет на индексацию так страниц?
Буду крайне благодарен за Вашу помощь!
htaccess не может телепатически определять какие страницы у вас существуют при динамическом генерирования а какие нет. Вы можете только задать конкретные параметры по которым может открываться страницы. А еще лучше делать нормальную проверку у себя в скрипте.
Делайте редирект например на главную, при ошибке 404, а еще лучше создайте страничку 404 и сливать туда
Делайте редирект например на главную, при ошибке 404, а еще лучше создайте страничку 404 и сливать туда
Здравствуйте, вроде бы так и сделал - посмотрите, я прописал директиву соответствующую и создал страницу ошибки:
Прописал строчку:
ErrorDocument 404 /404.html
Однако при добавлении аброкадабры к существующей ссылке, открывается страница с последним действующим параметром идя по переменным справа на лево. Например урл:
http://site.ru/index.php?name=Pages&op=cat
и к нему добавить следующее
http://site.ru/index.php?name=Pages&op=catывавыаываыва
то в строке браузера останется данный урл, и откроется страница с содержанием
http://site.ru/index.php?name=Pages&op=cat
Если http://site.ru/index.php?name=Pages&op=cappppppp , то т.к. переменная cat была нарушена урл в строке браузера остается такой же, а выдается содержимое страницы http://site.ru/index.php?name=Pages
Если http://site.ru/index.phываыва (нарушена главная страница), то в строке браузера остается данный урл, а содержимое выдается файла 404 ошибки.
И проблему я здесь же процитировал.
Вам выше дали ответ по поводу ваших проблем.
делать нормальную проверку у себя в скрипте.
А еще лучше делать нормальную проверку у себя в скрипте.
Увы, но я не понимаю о чем речь. Я думал, что такие вещи настраиваются в хэтэасессе. Сайт создан на старой цмс slaed. Впринципе, в свое время перелапачивал его полностью своими силами, тямы хватало, может и сейчас хватит, если поднаправите в какую сторону копать.
Увы, но я не понимаю о чем речь. Я думал, что такие вещи настраиваются в хэтэасессе.
Нет, к сожалению именно такие вещи в htaccess не настраиваются. Для htaccess есть файл index.php, он рабочий, остальные параметры которые ему передаются его не волнуют. Вы должны у себя в скрипте настроить правильную обработку всех входящих переменных и выдавать соответствующие заголовки. Как вариант, можно через мод_реврайт проверить входящие переменные, и если они не соответствует шаблону закрыть закрыть доступ или сделать редирект на верный вариант, что-то примерно по вашему случаю
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(name=[&]+&op=cat)[.]
RewriteRule ^(index\.php) /$1?%1 [R=301,L]
cat естественно заменить на имена ваших категорий, или смотря что у вас там
Нет, к сожалению именно такие вещи в htaccess не настраиваются. Для htaccess есть файл index.php, он рабочий, остальные параметры которые ему передаются его не волнуют. Вы должны у себя в скрипте настроить правильную обработку всех входящих переменных и выдавать соответствующие заголовки. Как вариант, можно через мод_реврайт проверить входящие переменные, и если они не соответствует шаблону закрыть закрыть доступ или сделать редирект на верный вариант, что-то примерно по вашему случаю
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(name=[&]+&op=cat)[.]
RewriteRule ^(index\.php) /$1?%1 [R=301,L]
cat естественно заменить на имена ваших категорий, или смотря что у вас там
Полазив немного в интернете, потупив пару часов..... Пришел за вопросом-советом
У сайта максимально длинные урлы с переменными идут вот такого вида:
/index.php?name=Pages&op=cat&id=132
/index.php?name=Pages&op=page&id=132&pid=11599
Т.е. переменная Name - это текущий раздел Pages в рамках которого и построен весь сайт (т.е. используя только этот раздел, одна переменная)
Есть переменная Op - которая выдает либо подразделы Сat, которые определяются по Id, либо выдает страницу Page (можно назвать ее подробным описанием), которая определяется по подразделу Id (привязанному к Cat), имея свой уникальный айди номер - Pid
Я правильно из данных соображений (опираясь на Ваш пример) строю следующую конструкцию:
RewriteCond %{QUERY_STRING} ^(name=[A-Za-z]+&op=[A-Za-z]+&id=[0-9]+&pid=[0-9])[.]
?
Я не особо в синтаксисе, а как я понял это стандартный синтаксис регулярных выражений пхп, которые в свое время я не изучал вообще. И вот выше описанной строчкой мы определяем наш урл и если он не определяется, то редиректим пользователя третьей строчкой на главную - правильно? А если соответственно редеректить нужно на страницу ошибки, то что-то вот такое должно получиться:
RewriteRule ^(404\.html) /$1?%1 [R=301,L]?
Я не особо в синтаксисе, а как я понял это стандартный синтаксис регулярных выражений пхп
Это стандартный синтаксис PCRE который используется и в php.
И вот выше описанной строчкой мы определяем наш урл и если он не определяется, то редиректим пользователя третьей строчкой на главную - правильно?
В примере на самом деле редиректится не на главной а на "правильный" урл.
Синтаксис неправильный, но страницу ошибки надо не редиректить, а реврайтить.
Вот топик про борьбу с дублями, почитайте, там все достаточно информативно.
ТС, можете попробовать (выбрать один вариант)
для страницы ошибки
RewriteEngine On
RewriteCond %{QUERY_STRING} !^name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+$
RewriteCond %{QUERY_STRING} !^name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+&pid=\d+$
RewriteRule ^index\.php 404.html [G,L]
для редиректа
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+&pid=\d+).
RewriteRule ^index\.php /index.php?%1 [R=301,L]
RewriteCond %{QUERY_STRING} !^name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+&pid=\d+$
RewriteCond %{QUERY_STRING} ^(name=[a-zA-Z]+&op=[a-zA-Z]+&id=\d+).
RewriteRule ^index\.php /index.php?%1 [R=301,L]