Como testar '.htaccess' na linha de comando

4

Estou tentando rastrear a causa de um Erro interno do servidor do Apache intermitente durante as edições e uploads do MediaWiki. Algumas fontes me dizem para verificar .htaccess para erros.

Eu posso auditar por .htaccess com:

sudo find /var -name '.htaccess' -exec ls -al {} \;

No entanto, não sei qual é o comando do Apache para testar o arquivo .htaccess . Ou seja, não sei o que conectar na parte -exec de find .

Eu olhei para apachectl e tentei apachectl test , mas parece um beco sem saída:

$ apachectl test
Usage: /usr/sbin/httpd [-D name] [-d directory] [-f file]
                       [-C "directive"] [-c "directive"]
                       [-k start|restart|graceful|graceful-stop|stop]
                       [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X]
Options:
  -D name            : define a name for use in <IfDefine name> directives
  -d directory       : specify an alternate initial ServerRoot
  -f file            : specify an alternate ServerConfigFile
  -C "directive"     : process directive before reading config files
  -c "directive"     : process directive after reading config files
  -e level           : show startup errors of level (see LogLevel)
  -E file            : log startup errors to file
  -v                 : show version number
  -V                 : show compile settings
  -h                 : list available command line options (this page)
  -l                 : list compiled in modules
  -L                 : list available configuration directives
  -t -D DUMP_VHOSTS  : show parsed vhost settings
  -t -D DUMP_RUN_CFG : show parsed run settings
  -S                 : a synonym for -t -D DUMP_VHOSTS -D DUMP_RUN_CFG
  -t -D DUMP_MODULES : show all loaded modules 
  -M                 : a synonym for -t -D DUMP_MODULES
  -t                 : run syntax check for config files
  -T                 : start without DocumentRoot(s) check
  -X                 : debug mode (only one worker, do not detach)

Tenho acesso SSH à caixa e é assim que faço a manutenção. Não há nenhum navegador disponível, mas eu provavelmente poderia trabalhar com lince, se necessário.

Como faço para testar os vários .htaccess mostrados abaixo na linha de comando?

$ sudo find /var -name '.htaccess' -exec ls -l {} \;
-rw-r----- 1 root apache 180 Aug  9  2015 /var/www/html/wiki/images/.htaccess
-rw-r----- 1 root apache 14 Aug  9  2015 /var/www/html/wiki/images/deleted/.htaccess
-rw-r----- 1 root apache 14 May 25  2015 /var/www/html/wiki/languages/.htaccess
-rw-r----- 1 root apache 14 May 25  2015 /var/www/html/wiki/serialized/.htaccess
-rw-r----- 1 root apache 14 May 25  2015 /var/www/html/wiki/cache/.htaccess
-rw-r----- 1 root apache 14 May 25  2015 /var/www/html/wiki/includes/.htaccess
-rw-r----- 1 root apache 14 May 25  2015 /var/www/html/wiki/maintenance/archives/.htaccess
-rw-r----- 1 root apache 14 May 25  2015 /var/www/html/wiki/maintenance/.htaccess
-rw-r----- 1 root apache 180 Aug  9  2015 /var/www/html/.htaccess
$ apachectl -v
Server version: Apache/2.4.6 (CentOS)
Server built:   May 12 2016 10:27:23
    
por jww 02.07.2016 / 23:48

1 resposta

3

How do I test .htaccess from the command line?

Exatamente da mesma forma como se você não estivesse em uma linha de comando, com uma solicitação HTTP.

Existem ferramentas comuns úteis para isso, como (mas não limitado a) curl e wget . Ambas as ferramentas incluem opções para obter o cabeçalho recebido, o código de retorno HTTP e a saída completa.

Se você precisar integrá-lo em uma pesquisa automática, você teria que fazer uma simples substituição de texto ou mapeamento como:

basename 'dirname /var/www/www.mysite.com/public'

... o que gera:

www.mysite.com

Com base nos seus comentários mostrando o caminho real de ........

echo www.yoursite.com/'dirname /var/www/html/wiki/serialized/.htaccess|cut -d/ -f5-'

... lhe daria:

www.yoursite.com/wiki/serialized

Então o comando final poderia ser:

wget $(echo www.yoursite.com/'dirname /var/www/html/wiki/serialized/.htaccess|cut -d/ -f5-')
    
por 03.07.2016 / 00:04