Не удается получить доступ к файлу с RewriteRule в .htaccess - PullRequest
0 голосов
/ 27 января 2019

У меня есть папка Storage / static / css.И я хочу, чтобы design / css увидел содержимое Storage / static / css.

/Classes
    ...
...
/Storage
    /static
        /css
            /home
                design.css
            /menu
            /footer
        /js
            ...
    /uploads
        ...
...
index.php

Я пробовал это:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -Indexes
    </IfModule>

    RewriteEngine On

    RewriteRule ^design/css/(.*)$ /Storage/static/css/$1

    RewriteRule ^ index.php [L]
</IfModule>

Для index.php давно работает нормально.Но с другой не работает вообще.

Я хочу, например:

Для design / css / home / design.css для возврата содержимого из хранилища/static/css/home/design.css.

Редактировать:

Все мое веб-приложение не в корневом.Он находится внутри папки с именем /arshwell.

1 Ответ

0 голосов
/ 27 января 2019

Похоже, вы случайно переписали запросы css за секунду ...

Попробуйте эту слегка измененную версию:

RewriteEngine On
RewriteRule ^/?design/css/(.*)$ /Storage/static/css/$1 [END]
RewriteRule ^ /index.php [END]

Это предотвратит переписывание запросовна /Storage/static/css/$1 немедленно переписывается на index.php по следующему правилу.

Если вы получаете внутреннюю ошибку сервера (статус http 500), используя вышеприведенное правило, скорее всего, вы используете очень старую версию http-сервера apache.В этом случае вы увидите определенный намек на неподдерживаемый флаг [END] в файле журнала ошибок http-серверов.Вы можете попробовать обновить или использовать более старый флаг [L], он, вероятно, будет работать так же в этой ситуации, хотя это немного зависит от ваших настроек.

Этот набор правил также будет работать в конфигурации хоста http-серверов или внутри файла динамической конфигурации (файл ".htaccess").Очевидно, что модуль перезаписи должен быть загружен внутри http-сервера, и в случае, если вы используете файл динамической конфигурации, вам нужно позаботиться о том, чтобы его интерпретация вообще была включена в конфигурации хоста и находилась в папке DOCUMENT_ROOT хоста.

И общее замечание: вам всегда следует размещать такие правила в конфигурации хоста http-серверов, а не использовать файлы динамической конфигурации (".htaccess").Эти динамические конфигурационные файлы добавляют сложность, часто являются причиной неожиданного поведения, их трудно отладить, и они действительно замедляют работу http-сервера.Они предоставляются только в качестве последнего варианта для ситуаций, когда у вас нет доступа к реальной конфигурации хоста http-серверов (читай: действительно дешевые поставщики услуг) или для приложений, настаивающих на написании своих собственных правил (что является очевидным кошмаром безопасности).

...