1

Windows の XAMPP でサイトを実行しています。サイトのルートは localhost/sitename/ にあります。

mod_rewrite で .htaccess を使用して、index.php?app=appname を sitename/appname/ または sitename/appname に表示させました。

サイト名/アプリ名 (末尾のスラッシュなし) を介してアプリにアクセスすると、すべて問題ありません。ブラウザは、現在のページに関連して見つかったため、sitename/assets/.. で私の画像と css を見つけます。

問題は、sitename/appname/ (末尾にスラッシュを付けて) を介してアプリにアクセスすると、ブラウザーが sitename/appname/assets/ を検索しようとしてアセット フォルダーを見つけられないことです。

mod で assets フォルダーを書き換えずに、これを修正するにはどうすればよいですか?

4

3 に答える 3

2

The problem is, when I access an app through sitename/appname/ (with trailing slash), the browser cannot find my assets folder, as it is now trying to look in sitename/appname/assets/.

The trailing slash is changing the base of your relative URI's. Without using mod_rewrite voodoo to fix this, you need to add the correct base in your page headers using the <base> tag:

<base href="/sitename/appname/">

or whatever the appropriate base should be.

于 2012-09-09T18:49:05.167 に答える
1

スラッシュがないと、ブラウザーは現在のディレクトリが/sitename/であると認識し、スラッシュがあるとブラウザーは現在のディレクトリが であると認識していると思います/sitename/appname/

そのため、 などの相対パス (スラッシュで始まらないもの) を持つアセットは"assets/image.png"、現在のディレクトリに基づいていると見なされます。これを修正するには、パスをスラッシュで開始することにより、すべてのアセット パスをルートに固定された絶対パスに変更することができます。したがって、前の例は になり"/sitename/assets/image.png"ます。しかし、アセットパスの書き換えを避けたいというあなたの願望にもかかわらず、次のほうが簡単だと思います:

RewriteRule ^/sitename/appname/assets/(.+)$ /sitename/assets/$1

これにより、存在しないパスに対する失われた要求がキャッチappname/assetsされ、正しい/sitename/assetsパスが参照されます。

于 2012-09-09T18:03:02.867 に答える
0

アドレスが www.example.com/permalink-to-post/ の index.php で投稿が表示されたときに、WordPress がこの問題をどのように処理するかを見ると、すべてのリンク、画像、および CSS への絶対ファイル パスを使用することが最善の答えのようです。

この場合、/assets/ フォルダーへの各リンクはhttp://localhost/sitename/assets/. (サイトがライブ Web サーバー上にあるまで)

于 2012-09-10T06:48:51.150 に答える