У меня очень странная проблема: Google сообщает мне, что некоторые ссылки в моей карте сайта недоступны и выдают ошибку 404. Однако я попытался открыть соответствующие страницы, и все работает нормально.
Веб-сайт был создан с использованием codeigniter, и вот образец ссылок
Теперь, если вы попытаетесь открыть ссылку выше, все будет нормально. но если вы попытаетесь curl -I
:
curl -I http://widwebway.com/en/solutions HTTP/1.1 404 Not Found
Я сделал несколько маршрутов и переписал правила, чтобы исключить имя контроллера из URL-адреса. Другими словами, правильная ссылка
curl -I http://widwebway.com/en/widwebway/view/solutions HTTP/1.1 301 Moved Permanently Date: Wed, 29 Feb 2012 18:05:01 GMT Server: Apache/2.2.14 (Ubuntu) Location: http://widwebway.com/en/solutions Vary: Accept-Encoding Content-Type: text/html; charset=iso-8859-1
Журнал ошибок Apache дает
File does not exist: /var/www/myweb/en, referer: http://widwebway.com/en/solutions
мой .htaccess
является:
ErrorDocument 404 /index.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^ar/widwebway/view/([a-z_]{1,50})[/]*$ /ar/$1 [L,R=301,NC]
RewriteRule ^en/widwebway/view/([a-z_]{1,50})[/]*$ /en/$1 [L,R=301,NC]
RewriteRule ^en/widwebway[/]*$ /en/home [L,R=301,NC]
RewriteRule ^ar/widwebway[/]*$ /ar/home [L,R=301,NC]
</IfModule>
Есть идеи, как получается, что страница есть, но выдает 404 на curl или боте Google?
Вот что я обнаружил: браузер на самом деле тоже получает 404 http://widwebway.com/en/solutions
Когда я иду в: http://widwebway.com/en/widwebway/view/solutions
Я получил:
Request URL:http://widwebway.com/en/widwebway/view/solutions
Request Method:GET
Status Code:301 Moved Permanently
Ход направлен на: http://widwebway.com/en/solutions
Этот файл /en/solutions
на самом деле не существует, но с вашим правилом перезаписи вы говорите браузеру отображать содержимое /en/widwebway/view/solutions
когда он видит /en/solutions
Из проверки сети Chrome:
Request URL:http://widwebway.com/en/solutions
Request Method:GET
Status Code:404 Not Found
Попробуйте вместо этого использовать флаг PT. поскольку / en / solutions не настоящий файл. Это должно избавить вас от ошибки 404. Пример из Документы Apache
Alias /icons /usr/local/apache/icons
RewriteRule /pics/(.+)\.jpg /icons/$1.gif [PT]
Похоже, у вас отсутствует (или у вас искаженный) файл .htaccess.
Создайте файл .htaccess в корневом каталоге и добавьте следующую строку RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
чтобы избежать ошибки 404.
Я надеюсь, это поможет.
Спасибо!