- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
День добрый! Прошу помощи, уважаемые!
Есть старенький сайт без ЧПУ, урлы вида 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]