▲ Наверх

Внимание: Я русскоязычный житель Харькова категорически против военного вмешательства России во внутренние дела Украины. Россияне, не верьте вашим руководителям-политикам. Я говорю на русском языке и никаких проблем из-за этого никогда не испытывал. Ни в Харькове, ни в Киеве, ни во Львове. Истерия нагнетается российскими СМИ/'русско-патриотическими блоггерами', будьте благоразумными. Главная опасность для меня лично - не бандеровцы-националисты, а ваш плешивый кремлевский фюрер - Путин.


Если WordPress портит htaccess файл

7 октября 2013 | rotozeev

Не понимаю я ситуацию, когда люди создают автономный блог на wordpress только для того, чтобы писать о том, как правильно возиться с этим блогом. Поэтому такого плана как этот посты у меня редкость.

В чем суть проблемы.

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

No input file specified

Такое сообщение показывается на любых страницах сайта, даже не связанных с wordpress. Данная ошибка возникает из-за того, что важный служебный файл .htaccess в корневом каталоге блога изменился. Этот файл прежде всего нужен для того, чтобы в WordPress работали ЧПУ ссылки. При этом веб-сервер очень болезненно реагирует на ошибки в этом файле. Каждый раз при возникновении «No input file specified» я видел, что в .htaccess файле появлялись лишние строчки, бессмысленное нагромождение символов, повторения. Например:

— начало файла —

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

# END WordPress
# BEGIN WordPress

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

# END WordPress
—- конец файла —-

Проблема решалась просто тем, что у меня был правильный .htaccess файл, которым я заменял испорченный и все сразу оживало. Я сначала думал, что это вирус или зловредный код в скриптах. Однако, оказалось, что сам wordpress имеет штатную возможность изменять .htaccess. Для этого в WordPress имеется функция flush_rules, которая находится в файле wp-includes/rewrite.php. Эту функцию могут вызывать плагины, поэтому можно поиском по вхождению «flush_rules» в код плагинов понять — может ли он испортить .htaccess или нет. Если вы не собираетесь ставить на свой блог в дальнейшем какие то особые плагины, затрагивающие .htaccess файл, то можно просто внести небольшие изменения в сам код WP дабы он не смог автоматически трогать .htaccess. Для этого в вышеуказанном файле wp-includes/rewrite.php необходимо найти строчку:

return insert_with_markers( $htaccess_file, ‘WordPress’, $rules );

и вместо нее написать:

return true;

При этом CMS при вызове flush_rules будет считать, что файл .htaccess успешно обновлен, хотя на самом деле он будет не тронут.

Если вам понравился материал, пожалуйста, поделитесь им с друзьями:
Categories: Интернет Tags:



Популярный блог Харькова, 2017 год
Тут была Яндекс-метрика