Правило перенаправления .htaccess для родительского каталога в href - PullRequest
0 голосов
/ 03 августа 2020

Я разрабатываю структуру PHP MVC. У меня есть каталог root, в котором перечислены все каталоги проекта. В root есть папка res, куда я помещаю все мои общие таблицы стилей и файлы скриптов, которые будут регулярно использоваться в других проектах. Примерно так:

root
   |__res
   |    |__scripts
   |    |__styles
   |
   |__project1
   |         |__.htacess
   |__project2
   |         |__.htacess

Я ссылаюсь на сценарии из моих проектов, например:


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

У каждого проекта есть конфигурация .htaccess. Моя конфигурация 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]

Когда я запускаю свой проект на localhost, он работает отлично, но когда я запускаю его на своем онлайн-сервере, я получаю ошибку 404


http://someurl.server.com/res/styles/my.css
[HTTP/1.1 404 Not Found 101ms]


http://someurl.server.com/res/scripts/my.js
[HTTP/1.1 404 Not Found 101ms]

I заметил, что даже двойные точки, .. / , которые используются для ссылки на родительский каталог из href, также удаляются, чего не происходит на localhost или локальном сервере.

Ранее я при запуске проекта на живом сервере возникала следующая ошибка:


The stylesheet http://someurl.server.com/res/styles/w3.css was not loaded because its MIME type, “text/html”, is not “text/css”

Я удаляю эту ошибку, добавляя следующую строку в файл htaccess:

RewriteCond %{REQUEST_URI} !\.(?:css|js|jpe?g|gif|png)$ [NC]

Я очень новичок в htaccess и потерял . Пожалуйста, помогите.

...