htaccess. Использование DirectoryIndex в.htaccess Невыносимый index php settings html

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

Структура директорий WordPress

Файловая структура WordPress очень проста. У вас есть папка public_html , где находятся как правило три ключевые папки, а так же множество других важных файлов, включая wp-config.php и .htaccess

Чтоб получить доступ к файлам и папкам, вы можете использовать файловый менеджер cPanel от вашего хостинг-сервиса или любой обычный

Для этого обзора мы будем использовать самый популярный ftp-клиент — FileZilla. Вот как должна выглядеть папка public_html внутри:

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

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

Затем, есть файл , который по умолчанию представляет вашу домашнюю страницу, если, конечно, он не замещен страницами типа front-page.php или home.php :

Еще один необходимый файл в этой директории – это wp-config.php . Данный файл позволяет задать базовую конфигурацию WordPress, включая настройки для базы данных MySQL , секретные ключи, и информацию о префиксе базы данных. Вот как должны выглядеть настройки вашей базы данных:

// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define("DB_NAME", "notarealname"); /** MySQL database username */ define("DB_USER", "notarealuser"); /** MySQL database password */ define("DB_PASSWORD", "notarealpassword"); /** MySQL hostname */ define("DB_HOST", "localhost");

Другие примечательные файлы в этой директории – это wp-activate.php , и wp-signup.php , которые все вместе отвечают за регистрацию, авторизацию и процесс подтверждения пользовательской регистрации. Файл wp-comments-post.php отвечает за функцию комментирования и предотвращение дупликации контента, в то время как wp-settings.php отвечает за установку некоторых WordPress-переменных.

Как понятно из названия папки, здесь лежит инструментарий админа. Например, admin.php (сердце данной папки) позволяет вам связать инсталляцию с базой данных, отображает панель управления WordPress и предлагает прочие ключевые функции, такие как, например, проверка того, является ли данный пользователь администратором. Если пользователь является админом, то включается использование файла wp-load.php , который в свою очередь загружает файл wp-config.php :

/** * In WordPress Administration Screens * * @since 2.3.2 */ if (! defined("WP_ADMIN")) { define("WP_ADMIN", true); } if (! defined("WP_NETWORK_ADMIN")) define("WP_NETWORK_ADMIN", false); if (! defined("WP_USER_ADMIN")) define("WP_USER_ADMIN", false); if (! WP_NETWORK_ADMIN && ! WP_USER_ADMIN) { define("WP_BLOG_ADMIN", true); } if (isset($_GET["import"]) && !defined("WP_LOAD_IMPORTERS")) define("WP_LOAD_IMPORTERS", true); require_once(dirname(dirname(__FILE__)) . "/wp-load.php");

Если вы обратите внимание на названия данных файлов, то поймете, что большинство из них говорят пользователю о выполняемых ими функциях, которые вам знакомы по админке WordPress. Например, profile.php выводит экран администрирования пользовательского профиля, theme-install.php контролирует панель установки тем, а plugin-install.php делает тоже самое для панели установки плагинов.

Что касается других важных папок внутри wp-admin , то images заполнены картинками, которые используются в административной панели WordPress, css и js – это «дома» для CSS-кода и JavaScript-скриптов, а network включает PHP-файлы, необходимые для работы мультисайтовости WordPress

Вероятно, именно здесь вы проводите большую часть своего времени, работая с WordPress, так как здесь собраны наиболее используемые файлы и функции, а именно, темы и плагины:

Каждый загруженный вами плагин имеет свою собственную папку в этой общей папке, как видно в примере выше. Контент каждой папки разумеется, варьируется от плагина к плагину. Вот, например, как выглядит папка популярного плагина Akismet.

Если у вас возникли какие-то , то следует воспользоваться FTP-доступом для отключения расширений. Сделать это можно удалив или просто временно переименовав папку с конфликтным плагином.

Так же, как и в случае с плагинами, каждая тема имеет собственные подпапки. Если мы откроем папку с любой темой, то увидим там множество PHP-файлов, которые все вместе создают внешний вид и структуру вашей темы. Возьмем знаменитую тему Divi от Elegant Themes в качестве примера, в главной папке которой мы найдем файлы , a functions.php , a sidebar.php , и style.css , среди остальных. Divi также имеет отдельные папки для css, картинок и js темы, что весьма стандартно для большинства качественных тем. Но, как бы то ни было, некоторые другие папки достаточно уникальны, к примеру, epanel и et-pagebuilder :

Еще одна папка – это wp-includes , и она довольно большая. wp-includes содержит все те файлы, которые не вошли в описанные ранее папки. Условно говоря, именно благодаря этой папке сайт работает как часы.

Папка так важна, потому что здесь находится большинство файлов WordPress-ядра. Новая инсталляция WordPress содержит 140 различных файлов в главной директории и 14 разных папок (на момент написания статьи), включая сертификаты, шрифты, js и виджеты.

Но эти подпапки не так важны, как файлы, которые находятся в главной директории, например, functions.php . Этот маленький файл является важной частью ядра WordPress, так как он содержит множество самых разных функций, которые и позволяют WordPress стабильно работать. Например, данные строчки кода – это первое, что вы увидите, если откроете этот файл, и эта функция нужна, чтоб трансформировать данные в другие форматы.

/** * Convert given date string into a different format. * * $format should be either a PHP date format string, e.g. "U" for a Unix * timestamp, or "G" for a Unix timestamp assuming that $date is GMT. * * If $translate is true then the given date and format string will * be passed to date_i18n() for translation. * * @since 0.71 * * @param string $format Format of the date to return. * @param string $date Date string to convert. * @param bool $translate Whether the return date should be translated. Default true. * @return string|int|bool Formatted date string or Unix timestamp. False if $date is empty. */ function mysql2date($format, $date, $translate = true) { if (empty($date)) return false; if ("G" == $format) return strtotime($date . " +0000"); $i = strtotime($date); if ("U" == $format) return $i; if ($translate) return date_i18n($format, $i); else return date($format, $i); }

Другие ключевые файлы – это cache.php (управляет процессом добавления и удаления данных из кеша, а также за отвечает за его закрытие или перезапуск), links.php (функциональность, которая отвечает за ссылки WordPress) и version.php (отвечает за версию WordPress).

Очень надеюсь, что данная статья позволит новичкам получить базовые представления и знания о структуре вашего сайта на WordPress. Согласитесь — не каждому водителю нужно быть автомехаником, но предствлять где в авто находится мотор, а где подвеска, стоит всем кто за рулем. Ну это так, к слову 🙂

1 year ago | 9.0K

Для продвижения сайта в интернет, через поисковые системы, необходимы производить оптимизации. При создании сайта, может произойти ситуация, когда страница открывается по адресу /blog/index.php и /blog/. Такая ситуация негативно отразится на позициях вашего сайта в поисковых системах.

В этой статье мы рассмотрим, как с помощью файла.htaccess (если у вас веб-сервер apache), избавиться от дублирования контента.

Оставлять index.php в адресной строке сайта или лучше убрать?

Для ответа на этот вопрос, сравните два варианта URL-сайта в адресной строке браузера.

Пример 1:

https://ВАШ_САЙТ.COM/blog/index.php?p=13s332kkxs

Если посмотреть на URL в целом и GET-параметр после index.php, сложно представить какая статья может находиться по данной ссылке и при индексации сайта, поисковые роботы учитывают в том числе ключевые слова в URL-сайта.

Пример 2:

https://ВАШ_САЙТ.COM/blog/how-to-use-index-php/

В этом варианте, URL-сайта выглядит человеко-понятным и если посмотреть на данный URL, можно понять, что по этому адресу находится статья о использовании файла index.php.

Данный вид ссылок называется ЧПУ и расшифровывается как человеко-понятный урл, или на английском языке User Friendly URL. Для того, чтобы все ссылки на вашем сайте были ЧПУ, имеет смысл убрать index.php из GET-запроса страниц вашего сайта.

Как скрыть index.php с помощью.htaccess

Убрать index.php из GET-запроса вашего сайта очень легко. Для этого, если вы используйте веб-сервер apache, создайте или отредактируйте в корневом каталоге вашего сайта файл.htaccess, вписав в него следующий код:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?/$1 [L]

Все Вы знаете, что страница "index.php " открывается по умолчанию. То есть когда Вы указываете в URL путь к каталогу, например так: "http://site.ru/mydir/ ", то сервером возвращается файл "index.php " из этого каталога. Если этого файла нет, то возвращается "index.html " или "index.htm ". Если и их нет, то выводится либо содержимое каталога, либо ошибка 403 ("Forbidden "), в зависимости от настроек сервера. Но иногда требуется переопределить страницу по умолчанию и возвращать из каталога совсем другой файл. Именно для такой цели и используется DirectoryIndex в.htaccess .

Давайте приведу пример использования DirectoryIndex в.htaccess :

DirectoryIndex index.html index.htm index.php

Таким образом, будет происходить следующее: при обращении к каталогу будет возвращён файл index.html , если его нет, то index.htm , а если и его нет, то index.php . То есть мы не просто определили те файлы, которые должны открываться по умолчанию, но и их приоритет.

Так же Вы можете и так использовать DirectoryIndex в.htaccess :

DirectoryIndex mainpage.html

Тогда ни один из файлов "index " открываться по умолчанию не будет, а отдаваться сервером будет файл "mainpage.html ". В общем, как видите, "DirectoryIndex " - очень интересная директива, которую иногда можно красиво использовать, хотя, безусловно, требуется это достаточно редко.

Часто слышу, что сеошники советуют убирать окончания.html, .php и.htm в адресах ваших сайтов – якобы, это негативно влияет на продвижение. Кто-то же говорит, что это просто визуально добавляет адресу лишний мусор.

В любом случае, убирать или оставлять эти окончания, решать вам, я же покажу, как это реализовать на статичном сайте (то есть сайте, находящемся не на CMS). Почему только на статичном? Потому что для различных CMS это реализовывается разными методами, о которых я также расскажу в последующих статьях.

Не утверждаю на 100%, что этот метод не будет работать на какой-то из CMS – пробуйте и о результатах отписывайтесь в комментариях.

Убираем.html, .php и.htm на Apache

Как вы знаете, в Apache существует файл.htaccess, который содержит в себе набор настроек и конфигураций сервера. С его помощью мы и будем убирать ненужные нам окончания.

1. Подключитесь к сайту по FTP и в корне сайта найдите файл .htaccess . Откройте его. Если такой файл отсутствует – создайте.

2. Найдите строчку, содержащую:

RewriteEngine On

Сразу после нее вставьте следующие правила.

Если вам необходимо убрать.php :

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)$ $1.php

Если вам необходимо убрать.html :

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)$ $1.html

Если вам необходимо убрать.htm :

RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^.]+)$ $1.htm

Если строчка «RewriteEngine On » отсутствует в файле – добавьте ее в самое начало.

После чего сохраните изменения и отправьте файл обратно на сайт. Если раньше адреса на вашем сайте были вида

Https://www..php

то теперь вы можете открыть эту страницу по адресу:

Https://www.

Убираем.html, .php и.htm на Nginx

1. Для того чтобы подобную настройку произвести в Nginx, откройте файл конфигурации по адресу:

/etc/nginx/nginx.conf

в FTP (если вам позволяют права) либо через панель управления сервером.

Если вам необходимо убрать.php :

Rewrite ^/([^.]+)$ /$1.php break;

Если вам необходимо убрать.html :

Rewrite ^/([^.]+)$ /$1.html break;

Если вам необходимо убрать.htm :

Rewrite ^/([^.]+)$ /$1.htm break;

Если в процессе настройки у вас что-то не получается – пишите об этом в комментариях.