Поддержка Проблемы и решения 404-я ошибка и sitemap — без pretty URL

  • Добрый день! Есть сайт, http://terraoko.com. (Веб-сервер — Апач, на морде стоит nginx, но 404-е обрабатываются Апачем по настройкам). Включить «pretty permalinks» (ЧПУ) нельзя по условиям работы. Это вызывает следующие проблемы, которые непонятно как решать:

    1) Не работает 404-я страница и не возвращается в нужных ситуациях код 404, при обращении на несуществующие URL или файлы отдаётся цепочка кодов 301->200, с дописыванием слэша к URL в адресной строке браузера и визуальному переходу на главную страницу, вот например:
    http://terraoko.com/non-exist-url трансформируется в http://terraoko.com/non-exist-url/

    Директива «ErrorDocument 404 /404.html» в .htaccess не помогает (видимо от того что всё что угодно идёт на index.php), а файл 404.php темы при выключенных ЧПУ ссылках тоже не хочет работать (хотя работает при включенных, но включать их не разрешается).

    2) Ни один из плагинов, генерирующих динамическую карту сайта, не выдают рабочую ссылку по адресу /sitemap.xml. А статическую карту непонятно чем создавать, все новые плагины под новую версию WP ориентированы на динамическую…

    Что можно сделать хотя бы по 1-му пункту (и насколько это реально)?

    PS. Заранее признателен!

    С уважением,
    Никита

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • PS. Файл .htaccess стандартный вордпрессовский:

    # BEGIN WordPress

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>

    # END WordPress

    Модератор Yui

    (@fierevere)

    永子

    убедитесь что у вас включен на апаче mod_rewrite
    и для папки сайта разрешено AllowOverride All или AllowOverride Options

    С этим полный порядок(((

    Выяснился такой прикол: если удалить стандартное содержимое из .htaccess, которое в норме отвечает за возможность использования ЧПУ — то сайт начинает возвращать нормальные 404-е коды на несуществующих URL!

    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    

    Но я не знаю, насколько так корректно делать — даже несмотря на то, что по условию задачи ЧПУ как раз и не нужны?

    Модератор Yuri

    (@yube)

    Выяснился такой прикол:

    И в чем же прикол? В стандартном .htaccess вордпресса прямо так и написано: если запрошенного (REQUEST_FILENAME) файла (-f) и директории (-d) нет (!), то открыть index.php.

    Это нужно для работы ЧПУ, потому что директорий/файлов из ЧПУ-шных урлов реально не существует.

    Так по идее это важно и для не-ЧПУ, т.к. директорий/файлов вида ?cat_id=253 тоже реально не существует)))

    А вот что теперь можно сделать с картой сайта, учитывая что все типовые плагины типа Google XML Sitemap генерят динамическую карту, а не sitemap.xml? (Обращения на sitemap.xml работают только если включены ЧПУ).

    Модератор Yuri

    (@yube)

    Так по идее это важно и для не-ЧПУ, т.к. директорий/файлов вида ?cat_id=253 тоже реально не существует)))

    Неправильная идея. ?cat_id ни разу не файл, это get-параметр.
    Как вебмастер вебмастеру: советую разобраться со структурой url.

    Модератор Yuri

    (@yube)

    А вот что теперь можно сделать с картой сайта, учитывая что все типовые плагины типа Google XML Sitemap генерят динамическую карту, а не sitemap.xml?

    Сделать отдельный реврайт для sitemap.xml. Как-то так

    
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^sitemap.xml$ /index.php [L]
    </IfModule>
    

    Только не внутри блока # BEGIN WordPress — # END WordPress

    Спасибо, повторю матчасть)))

    А почему «Только не внутри блока # BEGIN WordPress — # END WordPress» ?

    Модератор Yui

    (@fierevere)

    永子

    А почему «Только не внутри блока # BEGIN WordPress — # END WordPress» ?

    потому что зайдете в настройки > постоянные ссылки
    нажмете сохранить и этот блок перезапишется

    Модератор Yuri

    (@yube)

    нажмете сохранить

    Та можно и не нажимать, достаточно просто зайти в настройки пермалинков.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «404-я ошибка и sitemap — без pretty URL» закрыта для новых ответов.