Настраивал Mod_Rewrite
Целую неделю потратил на настройку этого модуля. Для тех кто не знает, mod_rewrite - это модуль веб-сервер Apache, целью которого является преобразование url адресов. Можно настраивать разное, делать перенаправления, блокированние и многое другое.
Моей задачей было следующее. Делаю проект, где я изменил структуру WordPress, в итоге мои статьи выводились не в index.php, а на другой странице, под названием primer.php. Из-за этого, перестал работать плагин SimpleTags, вернее он работал, но работал не корректно. При щелчке на тег, страницы не выводились. Было показано, что страница не найдена. В итоге я попробовал добавить это:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^tag/.*$ /home/sait/public_html/sait.ru/wp-content/themes/tema/tegi.php
RewriteRule ^.htaccess$ - [F]
</IfModule>
После этого все ссылки вида sait.ru/tag/меняющиеся_ссылки, перенаправляются на файл tegi.php
<IfModule mod_rewrite.c>
RewriteEngine On RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php/$1 [L,QSA]
</IfModule>
А эти строки я вставил для того, чтобы другие ссылки WordPress работали правильно.
После вышеописанных действий при щелчке выводились статьи, но почему то все статьи, а не те, где содержались определенные метки. Это меня не устраивало и я начал искать, как решить эту проблему.
После моих долгих проверок оказалось, что теги корректно работают только после вставки кода SimpleTags в файл index.php. А ведь моя структура была совсем другой. Мне не нужно было выводить статьи на начальной странице. Ну и здесь мне помог mod_rewrite. Теперь код вывода статей и меток, плюс дизайна сайта я разместил в index.php. После этих действий, все стало работать правильно.
Как оказалось, нужно было сделать совсем немного. Необходимо было добавить в файл .htaccess эту строку:
DirectoryIndex main.php
И теперь вывод стартовый страницы производился не через index.php, а через другую страниу, у меня она называласб main.php.
Много времени я потратил на эту задачу. Написал эту статью в надежде на то, что у кого то будет аналогичная ситуация. Надеюсь вы поняли смысл этой статьи. Далее приведу обозначение синтаксиса модуля mod_rewrite.
RewriteEngine On - этот параметр включает модуль
RewriteBase / - ссылка на папку вашего сайта
RewriteRule ^tag/.*$ /home/sait/public_html/sait.ru/wp-content/themes/tema/tegi.php - перенаправляет ссылку на tegi.php.
Чуть не забыл упоминуть о том, что в этом модуле можно использовать регулярные выражения. Для тех кто не знает, что это такое скажу, регулярными выражениями составляют шаблон поиска определенного расположения текста.
RewriteRule ^.htaccess$ - [F] - если пользователь наберет адрес пути к файлу .htaccess, то он не откроется, это сделано для того, чтобы обезопасить Вас от посторонних глаз.
[F] - это специальные флаги, флагов у мод реврайт достаточное количество. Так, что пробуйте эксперементировать. До встречи!
