AWStats в подкаталоге Wordpress показывает ошибку 404, когда защищен паролем

Я запускаю (для клиента) сайт Wordpress на сервере CentOS / WHM / Apache 2.2, и в подкаталоге у нас установлен AWStats. Все работает нормально, пока мы не применим защиту паролем через файл htaccess. При установленной защите паролем это приводит к ошибке 404 при попытке просмотра AWStats.

После долгих проб и ошибок мы обнаружили, что это связано с правилами Wordpress htaccess.

Корректируя их следующим образом:

# BEGIN WordPress  
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]  
# The following line is the line we added  
RewriteCond %{REQUEST_URI} ^wp-content/stats(.*) 
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

(AWStats был установлен в подпапку wp-content, так как это приводит к наименьшему количеству проблем с Wordpress)

Что работало нормально, пока автоматическое обновление Wordpress не стерло все изменения и не восстановило этот блок htaccess по умолчанию. Внесение этого изменения и удаление маркеров # Begin / End Wordpress приводит к 500 ошибкам повсюду, когда происходит следующее обновление Wordpress, поскольку оно просто добавляет еще один из этих блоков.

Все, что я пробовал, похоже, не работает.

Что я пробовал:

  1. Добавление условия перезаписи htaccess с правилом записи для себя отдельно, как до, так и после сегмента Wordpress. Это приводит к проблеме 404.

  2. Добавление условия перезаписи htaccess с правилом write-to-self в файле htaccess в каталоге AWStats. Это приводит к проблеме 404.

  3. Добавление файла htaccess в каталог AWStats с помощью директивы; RewriteEngine Off. Это приводит к проблеме 404.

  4. Создание поддомена для каталога AWStats. Это просто приводит к ошибке конфигурации в AWStats (которую я, кажется, не могу исправить, поэтому тот, кто лучше меня разбирается в параметрах конфигурации AWStats, может использовать это решение)

  5. Удаление защиты паролем. Не идеально, этот сайт уже стал целью спамеров комментариев Wordpress, спамеров-рефереров и всех остальных PITA, которые хотят злоупотребить плохим беззащитным сайтом Wordpress.

Я хотел бы решить эту проблему, не предоставляя клиенту доступ к cPanel, поскольку они хотите, чтобы несколько человек имели доступ к статистическим данным в AWStats (да, у нас также установлена ​​аналитика на сайте, клиент хочет также AWStats ), который не должен иметь доступа ко всему, что может дать ему cPanel.

Есть ли у кого-нибудь предложения или опыт решения этой конкретной проблемы?

0
задан 18 October 2016 в 12:13
1 ответ

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

В wp-включает/класс-wp-перезаписывает. php, начиная со строки 1512 (WP v4.6.1), в методе mod_rewrite_rules() в классе WP_rewrite:

$rules = "<IfModule mod_rewrite.c>\n";
$rules .= "RewriteEngine On\n";
$rules .= "RewriteBase $home_root\n";

// Prevent -f checks on index.php.
$rules .= "RewriteRule ^index\.php$ - [L]\n";

И именно сюда я добавил свою собственную строку.

$rules .= "RewriteCond %{REQUEST_URI} ^wp-content/stats(.*)\n";

(Метод продолжается для гораздо большего количества строк перед заполнением блока команд Wordpress внутри файла .htaccess, если нужно отредактировать что-то из этого самостоятельно, просто отредактируйте там, где нужны директивы, чтобы сидеть в последовательности)

Я собираюсь работать над собственной функцией, чтобы взять это на себя в рамках темы, которую я сделал для этого клиента, чтобы обрабатывать любые изменения в этих файлах во время обновления Wordpress. Это было быстрое и грязное исправление.

0
ответ дан 5 December 2019 в 09:29

Теги

Похожие вопросы