Apache reescreve a URL a ser detectada pelo AliasMatch

1

Eu preciso de mod_rewrite para mapear novamente uma URL de entrada para que ela seja capturada por AliasMatch .

RewriteCond %{REQUEST_URI} ^/app/(.*)$
RewriteRule ^/app/(.*)  ^/dev-dave/app/$1

RewriteCond %{REQUEST_URI} ^/static/(.*)$
RewriteRule ^/static/(.*) ^/dev-dave/static/$1



AliasMatch ^/(.*)/static/(.*)$ /var/www/html/cosmos/$1/dist/static/$2
AliasMatch ^/(.*)/app/(.*)$ /var/www/html/cosmos/$1/dist/index.html
<Directory /var/www/html/cosmos>
            AllowOverride None
            Require all granted

    <IfModule mod_rewrite.c>
                RewriteEngine On
            RewriteBase /
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d

    </IfModule>
</Directory>

Isso é possível? Eu não consigo fazer isso funcionar.

    
por Dmac 11.07.2017 / 22:07

1 resposta

2

Na configuração principal do servidor , você deve usar o sinalizador PT ( passthrough ) nas diretivas RewriteRule que deseja que sejam capturadas pelo AliasMatch . (O PT flag está implícito em um contexto diretório , portanto, não seria necessário em diretivas que aparecem posteriormente em seu arquivo, no contêiner <Directory> .)

Dos documentos do Apache para o sinal PT :

The target (or substitution string) in a RewriteRule is assumed to be a file path, by default. The use of the [PT] flag causes it to be treated as a URI instead. That is to say, the use of the [PT] flag causes the result of the RewriteRule to be passed back through URL mapping, so that location-based mappings, such as Alias, Redirect, or ScriptAlias, for example, might have a chance to take effect.

If, for example, you have an Alias for /icons, and have a RewriteRule pointing there, you should use the [PT] flag to ensure that the Alias is evaluated.

            RewriteEngine On
        RewriteBase /
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d

Além de: Seu front controller , definido posteriormente, está sem a diretiva RewriteRule ?! Então isso não fará nada em seu estado atual. No entanto, também é propenso a erros ... se mais tarde você tiver adicionado uma diretiva RewriteRule posteriormente no contêiner <Directory> , as condições anteriores serão aplicadas (inesperadamente).

    
por 11.07.2017 / 23:52