htacess перенаправляет на файлы js и css - PullRequest
0 голосов
/ 03 августа 2020

Это моя типичная PHP MVC Структура:

-Resources
        --/my.css
        --/my.js
-Project
        --/.htaccess
        --/index.php
        --/Other Files & Folders

Это моя конфигурация htaccess:


Options -Indexes

#AddHandler application/x-httpd-php53 .php .php5 .php4 .php3
RewriteEngine on

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

Напишите, теперь все мои запросы проходят через индекс. php. В моих файлах проекта я получаю доступ к своим файлам css и js, расположенным в папке ресурсов, например:

<link rel="stylesheet" type="text/css" href="/../Resources/my.css"/>
<script src="/../Resources/my.js"></script>

Это приводит к следующей ошибке

HTTP/1.1 404 Not Found 258ms

Я пытался добавить следующее правило перезаписи в конфигурацию htaccess, но оно не работает:

RewriteCond %{REQUEST_URI} ^/Resources/my.css
RewriteRule ^api(.*)$ ../Resources/my.css [NC,QSA,L]

Я не хочу менять структуру папок, поскольку одни и те же ресурсы CSS и JS используются несколькими проекты, и ими легко управлять из одного места. Я просто хочу как-то сослаться на них.

Я также не хочу включать код в свой файл проекта, например: include('../Resources/my.css') в PHP, я не хочу этого.

Предложите решение этой проблемы. С уважением и уважением

Ответы [ 2 ]

0 голосов
/ 08 августа 2020

Ну, как другие также указывали в комментариях и ответах, это НЕ ВОЗМОЖНО . Мы не можем ссылаться выше или вне нашего проекта Root из сценариев на стороне клиента. Мы можем делать что-то на стороне сервера, но код на стороне клиента невозможен /

0 голосов
/ 03 августа 2020

Для нас это своего рода неписаная роль - всегда помещать ресурсы в подкаталоги root dir (каталог, содержащий файл index.php, - root).

В любом случае, вы можете ' t переписать вне документа - root. Это вопрос безопасности, и подумайте об этом, имеет ли example.com/../my-dir какой-то смысл?

A обходной путь (например, в another-post ) должен создать символьную ссылку на ваш Resources каталог, давайте назовем его mySymbolLink, тогда вы можете сделать:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^Resources/.*
    RewriteRule ^Resources/(.*)$ /mySymbolLink/$1 [QSA,L]
</IfModule>

Но вам все равно нужно изменить пути, например /../Resources/my.js должно быть /Resources/my.js для работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...