server-status não está funcionando se allowoverride estiver configurado para todos

1

na configuração do meu apache, tenho as seguintes configurações

<Directory "/opt/website/new-website-old/httpdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Location /server-status>
    #AllowOverride None
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from all
</Location>

Usando isso, o status do servidor funciona, mas se eu mudar a opção allowoverride para tudo isso, não. Como posso fazer com que o status do servidor funcione se a opção allowoverride estiver definida como Todos

Eu segui isso, mas ainda não tenho sorte status do servidor wordpress

No meu arquivo de acesso ht atual eu tenho

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^www.asb.com.au$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/about/the-group/domain-asb$1 [R=301,L]
</IfModule>

# 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
    
por shorif2000 13.04.2012 / 15:14

2 respostas

6
Em primeiro lugar, estou confuso com o uso que você faz do seguinte no bloco de localização, eu sinto que você provavelmente gostaria de negar a todos, mas permita, talvez, o seu próprio IP, mas eu discordo.

Deny from all
Allow from all

A coisa mais importante que você perdeu no guia que você postou foi a seguinte:

RewriteCond %{REQUEST_URI} !=/server-status

O que tornaria o arquivo .htaccess mais parecido com isto:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Além disso, você parece ter dois blocos separados de reescritos no seu .htaccess, que são quase idênticos, eu os combinaria em um, para tornar o conteúdo finalizado do .htaccess (e nada mais):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !=/server-status
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^www.asb.com.au$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/about/the-group/domain-asb$1 [R=301,L]
</IfModule>

Apenas um pouco mais de informação para você, o AllowOverride sendo definido como none está fazendo o apache ignorar totalmente o arquivo .htaccess, então quando ele está definido para todos, claramente que informa algo em .htaccess está sobrescrevendo a capacidade de / server -status a ser tratado pelo manipulador de status do servidor. Em seu arquivo .htaccess, a linha problemática é basicamente:

RewriteRule . /index.php [L]

O que está dizendo ao apache para reescrever tudo e enviá-lo para index.php, isso porque o wordpress processa tudo através de index.php e permite URLs de SEO, entre outras coisas.

A linha que adicionamos:

RewriteCond %{REQUEST_URI} !=/server-status

Diz ao apache para fazer o que declaramos acima (reescrever tudo para index.php com base no RewriteRule), a menos que o URI seja / server-status - já que ele não será mais reescrito e enviado para o wordpress index.php, o manipulador deve ser capaz de se comportar como esperado.

As outras duas condições

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Para seu conhecimento, informe ao apache para não reescrever o URL se o pedido for um arquivo real ou uma pasta real.

Você pode ler mais sobre o Mod_Rewrite na documentação oficial .

    
por 13.04.2012 / 16:52
2

A maneira mais simples de fazer a página de status do servidor funcionar com as regras de reconfiguração do Wordpress é apenas criar uma pasta ou arquivo na pasta Wordpress com o nome server-status

Isso funciona porque (como WerkkreW aponta) as regras:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

significa que a reescrita não deve ser feita se houver um arquivo ou diretório com o mesmo nome.

    
por 17.09.2014 / 20:08