13

静的ファイルを提供する「main」というルートが必要です。

app.use('/main',express.static(__dirname+'/public'));

しかし、私がするとき:

http://my.site.dev/main

CSSファイルとJSファイルは、から取得しようとしているため、ダウンロードされません。

http://my.site.dev/css/styles.css

次の場所からファイルを取得する必要があります。

http://my.site.dev/main/css/styles.css

ただし、末尾にスラッシュを付けてサイトにアクセスすると、次のようになります。

http://my.site.dev/main/

すべてのファイルは正常に処理されます

末尾にスラッシュがないので、CSSやJSなどのリソースが入ってきないようにするアイデアはありますか?

4

2 に答える 2

22

これはhttpの問題であり、Express関連の課題だけではありません。この問題は次の場所で説明されています。

URLが/mainで、相対URLがcss / style.cssの場合、/ css/style.cssに解決されます。ただし、URLが/ main /の場合、相対URLは/main/css/style.cssに解決されます。

これに対処するための私の戦略は、末尾のスラッシュを追加するようにリダイレクトすることです。Expressでこのように:

app.all(/^\/main$/, function(req, res) { res.redirect('/main/'); });
app.use('/main/',express.static(__dirname+'/public'));

または:

app.enable('strict routing');
app.all('/main', function(req, res) { res.redirect('/main/'); });
app.use('/main/',express.static(__dirname+'/public'));
于 2012-09-27T19:14:06.990 に答える
1

JS / CSSファイルはHTMLでどのように要求されますか?のような文字列を使用している場合はcss/styles.css、現在のディレクトリから文字列を取得しようとします。のディレクトリ/main/(と同じよう/main.htmlに)ですが、のディレクトリ/main/はです/main/。簡単な修正は/main/css/styles.css、HTMLで使用することです。

于 2012-06-03T01:26:33.170 に答える