Назад | Перейти на главную страницу

URL перезаписи Apache, который будет обнаружен AliasMatch

Мне нужен mod_rewrite для повторного сопоставления входящего URL-адреса, чтобы он был пойман 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>

Это возможно? Я не могу заставить это работать.

В основном конфигурация сервера вы должны использовать PT (passthrough) флаг на RewriteRule директивы, которые вы хотите поймать AliasMatch. (The PT флаг подразумевается в каталог context, поэтому он не потребуется для директив, которые появляются позже в вашем файле, в <Directory> контейнер.)

Из Документы Apache для PT флаг:

По умолчанию предполагается, что целью (или строкой подстановки) в RewriteRule является путь к файлу. Использование флага [PT] приводит к тому, что вместо этого он обрабатывается как URI. Другими словами, использование флага [PT] приводит к тому, что результат RewriteRule передается обратно через сопоставление URL-адресов, чтобы сопоставления на основе местоположения, такие как Alias, Redirect или ScriptAlias, например, могли иметь шанс вступить в силу.

Если, например, у вас есть псевдоним для / icons и на него указывает RewriteRule, вам следует используйте флаг [PT], чтобы убедиться, что псевдоним оценивается.


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

В стороне: Ваш передний контроллер, определенный позже, отсутствует RewriteRule директива ?! Так что в текущем состоянии это ничего не сделает. Однако он также подвержен ошибкам ... если вы позже добавили RewriteRule директива позже в <Directory> контейнер, затем предыдущий условия будет (неожиданно) применен.