Apache 2.4 Converter .htaccess reescreve a vhost.conf

1

Eu tenho um .htaccess reescrever que eu gostaria de passar para um vhost.conf (eu não quero usar o .htaccess)

RewriteRule ^(.*?)(test_mod_rewrite) /$1media/plg_jchoptimize/assets/modrewrite.php?q=$2

RewriteRule ^(.*?)(gz|nz)/([^/]+)/([^/]+)/([^/]+)\.(js|css)$  /$1media/plg_jchoptimize/assets/jscss.php?f=$5&type=$6&gz=$2&d=$3&i=$4

Supondo que eu tenha os módulos apropriados habilitados e os pré-requisitos atendidos (RewriteEngine On, etc.), quais alterações são necessárias para que essa regra funcione dentro de um arquivo vhost.conf?

    
por jimg 04.09.2015 / 00:41

2 respostas

0

O problema estava relacionado a outra regra de reescrita fora de um bloco.

Para a história - isso funciona. Mude o diretório para se adequar.

<Directory /var/www/site/public_html/media/plg_jchoptimize/assets/>
    RewriteEngine On
    RewriteRule ^(.*?)(test_mod_rewrite) /$1media/plg_jchoptimize/assets/modrewrite.php?q=$2
    RewriteRule ^(.*?)(gz|nz)/([^/]+)/([^/]+)/([^/]+)\.(js|css)$  /$1media/plg_jchoptimize/assets/jscss.php?f=$5&type=$6&gz=$2&d=$3&i=$4
    Require all granted
</Directory>
    
por 11.09.2015 / 17:43
2

RewriteRules (supondo que você tenha RewriteEngine On também definido) funciona bem e praticamente o mesmo em ambos os arquivos. Htaccess e na sua configuração de host virtual. A única diferença principal é que ele funciona em um contexto por servidor em vez de um diretório por em sua configuração vhost, o que significa que as correspondências de URL como "foo" agora são "/ foo" (observe a barra inclusa no início , isso é o que a maioria das pessoas esquece). Além disso, o caminho resultante pode, em um contexto por servidor, ser um caminho completo do sistema de arquivos em vez de apenas um URI relativo.

RewriteRule foo.bar baz.abc agora se torna RewriteRule /foo.bar baz.abc

A forma como o sistema descobre se você está dizendo para ele criar uma reescrita para um caminho do sistema de arquivos ou um URI relativo é verificando o primeiro bit do resultado em relação ao sistema de arquivos. Assim, se você reescrever / foo para / home / foo, e / home existir em seu sistema de arquivos, ele será tratado como uma reconfiguração do sistema de arquivos em vez de apenas uma reescrita de URI relativa.

Supondo que você tenha / home mas não / img no seu sistema de arquivos , então:

RewriteRule /index.html /home/jane/index.html < - reescrita do caminho do sistema de arquivos (/ home existe no sistema de arquivos)

RewriteRule /index.html /img/index.html < - reescrita relativa (/ img não existe no sistema de arquivos, portanto youdomain / img / index.html é o resultado)

Espero que isso responda à sua pergunta

    
por 04.09.2015 / 09:41