Почему файл .htaccess может отсутствовать для WordPress-сайта

На днях к нам обратился пользователь, которому мы посоветовали удалить файл .htaccess для своего сайта, чтобы справиться с общей ошибкой WordPress. Пользователь не смог отыскать данный файл и подумал, что с его сайтом что-то не так. Конечно, новичкам отсутствие файла .htaccess может показаться странным. В этой статье мы покажем, куда пропадает файл .htaccess и как его создать при необходимости.

Что представляет собой файл .htaccess?

Файл .htaccess – это конфигурационный файл сервера, который «говорит» вашему серверу, как обрабатывать определенные аспекты вашего сайта. К примеру, как перенаправлять пользователей, как защитить некоторые директории и т.д.

Точка перед именем файла указывает на то, что этот файл скрытый. Когда вы получите доступ к своему серверу через FTP-клиент, вы не увидите файл .htaccess, если ваш клиент не включен на вывод скрытых файлов.

showhiddenfiles-ftp

В некоторых случаях, даже если вы установили соответствующую опцию в FTP-клиенте, он по-прежнему не будет отображать файл .htaccess.

Куда мог деться файл .htaccess?

Вообще, одна из причин, по которой файл .htaccess может отсутствовать, заключается в том, что ваш WP-сайт до сих пор не сгенерировал его. WordPress генерирует .htaccess файл в первый раз при установке красивых пермалинков в разделе Параметры – Постоянные ссылки. Все, что вам нужно сделать – это щелкнуть по кнопке «Сохранить изменения» на экране пермалинков, после чего WordPress сгенерирует файл .htaccess в корневой директории вашего сайта.

permalinksettings1

В некоторых редких случаях WordPress может быть неспособным сгенерировать.htaccess файл в результате проблем с правами доступа. В этом случае вы увидите уведомление на экране постоянных ссылок, которое проинформирует вас о том, что файл htaccess не является перезаписываемым. Если вы будете использовать отличную от дефолтной структуру постоянных ссылок, то вам будет выдан код, который вы вручную должны добавить в файл .htaccess.

htaccessfile-writable

Вам понадобится скопировать этот код и вставить его в любой текстовый редактор. Затем сохранить файл как .htaccess на компьютере. После чего соединиться со своим сервером по FTP через FTP-менеджер и загрузить данный файл на сервер.

Если в процессе загрузки файла произойдет ошибка, вам понадобится изменить права доступа к файлам для вашей корневой директории. Предположим, что все ваши файлы WordPress хранятся в папке /var/www/syedbalkhi/public_html/.

В таком случае папка public_html будет являться корневой директорией. Вам нужно будет перейти к ее родительскому каталогу и щелкнуть по public_html правой кнопкой мыши. Выберите пункт File Permissions, после чего вы увидите диалоговое окно, в котором можно будет задать права доступа к файлам. Введите 755 в диалоговое окно, после чего попробуйте загрузить файл .htaccess в папку public_html.

filepermissions

Таким образом, вы создадите нужный файл .htaccess для вашего WordPress-сайта.

Источник: wpbeginner.com

Блог про WordPress
Комментарии: 10
  1. Михаил

    Здравствуйте.
    У вас на скриншоте не весь .htaccess изображен.
    Подскажите, почему Вордпресс не хочет генерировать .htaccess, а если я его создаю и заливаю в корень папки — игнорирует?
    Никак не могу сделать редирект с www на домен без него.
    На двух сайтах уже так.

    1. Дмитрий (автор)

      Обычно проблема может быть с правами доступа к файлам. Попробуйте поменять права доступа к папке, в которой находится WP, на 755.

  2. vovasik

    у меня с ngnix вообще его не создается =)

  3. Василь

    Здравствуйте! У меня вордпресс автоматически генерирует .htaccess со стандартными настройками. Если я через сервер меняю его на свои настройки, он через несколько секунд вновь заменяет мой файл своим стандартным. Даже не знаю что еще делать.

    Помогите.

  4. Ann

    Здравствуйте, Дмитрий, хочу задать вопрос не совсем по теме. Я прописала в файле .htacces переадресацию с зеркала с www на без www:
    # BEGIN WordPress

    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^magnit40
    RewriteRule (.*) http://www.magnit40.ru/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://www.magnit40.ru/ [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [L,QSA]

    # END WordPress
    Но, когда ввожу magnit40.ru, то получается открыть сайт только в браузере Мозила (срабатывает переадресация на http://www.magnit40.ru), а в опере, гугл хром и яндекс браузере ничего не получается. Пишет, что ошибка DNS сервера или что-то в этом духе. Не подскажете, что я делаю не так?

    1. Дмитрий (автор)

      Хм, честно говоря, не знаю, в чем тут проблема.

      Попробуйте поставить плагин https://wordpress.org/plugins/simple-301-redirects/, и в нем задайте редирект, он автоматически внесет нужные правила.

      1. 13

        Ann, попробуйте так
        Options +FollowSymLinks
        RewriteEngine On
        RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
        RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  5. Дмитрий

    Спасибо! Еще раз нажал сохранить и все заработало)

  6. Alexander

    У меня (в отличии от оригинального файла Htaccess) есть еще 2 такие сточки:

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

    Подскажите, они нужны? Или это лишнее что-то. Возможно, меня взломали? Спасибо.

    1. Дмитрий (автор)

      Все в порядке. У вас прописан редирект на HTTPS.

Добавить комментарий для Василь Отменить ответ

Получать новые комментарии по электронной почте.