Я получаю сообщение об ошибке "Запрещено" при попытке доступа к www.website.com/server-status
mod_status включен
VirtualHost:
<VirtualHost *:8080>
ServerName website.com
ServerAlias www.website.com
DocumentRoot /var/www/wordpress/
DirectoryIndex index.php
<Directory /var/www/wordpress/>
AllowOverride All
Order Deny,Allow
Allow from all
Options +Indexes
</Directory>
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .website.com
</Location>
ErrorLog /var/www/wordpress/logs/error.log
CustomLog /var/www/wordpress/logs/access.log combined
</VirtualHost>
Я попытался изменить Allow с .website.com на IP-адрес веб-сайта, и возникла такая же проблема. Когда я пытаюсь изменить его на Разрешить из всех, я получаю 404.
Еще одна попытка, которую я сделал, заключалась в настройке разрешения с 127.0.0.1 и доступе через lynx изнутри сервера, в значительной степени та же проблема.
Вот ошибка, полученная в error.log:
[error] [client 127.0.0.1] client denied by server configuration: /var/www/wordpress/server-status
Кроме того, я отключил переопределение местоположения в status.conf, чтобы убедиться, что единственное определение статуса сервера будет в VirtualHost. Установка местоположения статуса сервера в apache.conf дает те же результаты.
Есть идеи, что мне не хватает?
Я пробовал помогать следующим ресурсам, но ни один из них не дал мне решения:
Спасибо
Проверьте правильность конфигурации виртуального хоста. Вы можете попробовать создать конфигурацию виртуального хоста для 127.0.0.1, например:
<VirtualHost *:80>
ServerAdmin superadmin@somemail.com
ServerName 127.0.0.1
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directory>
</VirtualHost>
Нашел это Вот
Строка Разрешить от не имеет отношения к вашему сайту. Allow from
позволяет людям с указанным IP-адресом (или доменным именем, которое разрешается в IP) получить доступ к вашему сайту.
Итак, если у вашего дома IP-адрес 2.2.2.2, вы должны указать allow from 2.2.2.2
и НЕ allow from yourownwebsite.com
.
Это должно исправить ваш 403 (запрещено), хотя я понимаю, что вы сказали, что пытались изменить его на 127.0.0.1 и получить к нему доступ непосредственно с сервера. Вы пробовали изменить 127.0.0.1 на localhost
?
Теперь по поводу 404. Это совсем другой вопрос. Это ошибка «Не найдено», а не «запрещенная» ошибка.
Контейнеры VirtualHost по умолчанию не предназначены для использования с mod_status. Это просто не сработает. В соответствии с этот сайт, у вас есть 2 варианта:
Я мало что знаю о WordPress, но если это что-то вроде Laravel, Magento или любого другого веб-программного обеспечения, которое работает на Apache, есть .htaccess файл, расположенный в корневом каталоге, простой пример из https://codex.wordpress.org/htaccess прямо здесь:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Я бы поставил реальные деньги, что если вы измените
AllowOverrides All
к
AllowOverrides None
страница появляется, однако мне кажется, что это слияние файла .htaccess и httpd.conf, а также ужасный беспорядок, которым являются все файлы conf Apache, я решил заняться этим другим способом.
Я предпочитаю изменить файл .htaccess из того, что показано выше, например, на:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /server-status
RewriteRule ".?" "-" [S=1]
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
это приведет к тому, что RewriteCond будет соответствовать uri конечной точки, а затем RewriteRule пропустит правило управления, которое перезаписывает все конечные точки в index.php, чтобы механизм wordpress мог работать с динамическими URL-адресами.
Может быть, есть более простой способ, но у меня был бы http.conf так:
<VirtualHost *:8080>
ServerName website.com
ServerAlias www.website.com
DocumentRoot /var/www/wordpress/
DirectoryIndex index.php
<Directory /var/www/wordpress/>
AllowOverride All
Order Deny,Allow
Allow from all
Options +Indexes
</Directory>
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.0.0.0/24
</Location>
ErrorLog /var/www/wordpress/logs/error.log
CustomLog /var/www/wordpress/logs/access.log combined
</VirtualHost>
какое-нибудь дополнительное чтение?