Переписать правило так, чтобы файлы css и js с абсолютными путями загружались правильно - PullRequest
2 голосов
/ 10 марта 2019

Мне потребовалось 2 часа, но я не могу понять это, и я не знаю, как найти решение для Google.

Это мое правило перезаписи в .htaccess-файле:

RewriteCond %{REQUEST_URI} ^/blog/(.*)
RewriteRule ^blog/(.*) http://localhost:2368/$1 [P]

Когда я вызываю example.com/blog, он перенаправляет меня на мой ghost-блог, работающий в nodejs (порт 2368).

Проблема: сам блог загружает файлы css и js с абсолютнымпути:

<link rel="stylesheet" type="text/css" href="/assets/built/screen.css" />.

Поэтому он пытается загрузить example.com/assets/built/screen.css.

Но файл доступен на example.com/blog/assets/built/screen.css

Как я могу решить эту проблему?

1 Ответ

4 голосов
/ 10 марта 2019

У вас есть 3 варианта:

  • Измените источник ссылок / сценариев на /blog/assets/...

  • Измените расположение файлов на /assets

  • Используйте RewriteRule

.htaccess

RewriteCond %{REQUEST_URI} ^/assets(.*)\.(css|js)$
RewriteRule ^(.*) /blog/$1 [L]

RewriteCond %{REQUEST_URI} ^/blog/(.*)
RewriteRule ^blog/(.*) http://localhost:2368/$1 [P]

Вот правило работает: .htaccess tester

Я предполагаю, что файлы обслуживаются apache2, а не ghost-blog, запущенным в node.js.Но если он последний, он все равно будет работать, так как после перенаправления он перейдет к следующему правилу.Но вы также можете сделать следующее:

RewriteCond %{REQUEST_URI} ^/assets(.*)\.(css|js)$
RewriteRule ^(.*) http://localhost:2368/$1 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...