絶対パスを持つcssファイルとjsファイルが正しくロードされるようにルールを書き換えます

Mar 09 2019

2時間かかりましたが、理解できず、解決策をグーグルで検索する方法がわかりません。

これは、.htaccessファイルの私の書き換えルールです。

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

example.com/blogを呼び出すと、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からアクセスできます。

どうすればこれを解決できますか?

回答

4 MarcosCasagrande Mar 09 2019 at 23:20

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テスター

私は、ファイルがghost-blognode.jsで実行されているのではなく、apache2によって提供されていると想定しています。ただし、後者の場合は、リダイレクト後に次のルールに進むため、引き続き機能します。ただし、次のこともできます。

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