2

**** 編集: ここで解決 img、a、およびヘッダーのファイルからの相対パス****

Webデザインにはやや新しい。

動的サイトの作成が完了しました。domain/category、domain/category/this-article-about-x を読み取ることができ、すべて domain/index.php にリダイレクトされ、うまく機能します。

しかし、./include などの相対パスを使用するときはいつでも、相対パスは現在の URL を考慮しており、php ファイルがある実際の URL を考慮していないことがすぐにわかりました。

長い間インターネットを閲覧していたときに答えられなかった 2 つの質問があります。

1) domain/index.php が ./thumbnails/science/image.jpg で画像を表示しようとしている場合、実際の URL が domain/category/ の場合は機能しませんが、ドメイン/カテゴリのみの場合は機能します(末尾にスラッシュはありません)。この矛盾はなぜですか?HTMLコードは、画像へのsrcを示していますが、どちらの場合も同じです。

2) ヘッダーにカテゴリのドロップダウン メニューがあります。送信されると、それ自体 (header.php) を呼び出し、ユーザーが選択したカテゴリを確認し、ドメイン/カテゴリにリダイレクトします。すべてうまくいきます。その後、ドロップダウン メニューを別のカテゴリに変更すると、すべてが再び読み込まれます。ただし、ドメイン/カテゴリ/ (末尾にスラッシュを付けて) に直接アクセスすると、CSS が読み込まれず、質問 1 で述べたように画像が読み込まれず、フォームを送信すると問題が発生します。 header.php ファイルが実際にあるドメインだけでなく、domain/category/ で header.php を探します。

dirname( FILE ) を正常に使用して、すべての作業が含まれていることを確認しました (テストが終了した限り、エラーはありません)。しかし、dirname( FILE ) を使用して、URL に関係なく常に画像を指すリンクまたは画像 'img src=' を生成できませんでした。

localhost では、HTML は img src=c:\path\htdocs\thumbnails\img として表示されますが、これは正しいのですが、とにかく画像が表示されません。「a href」リンクと同じです。dirname( FILE ) でリンクを作成しようとすると、localhost に c:\correctpath としてリンクが作成されましたが、それらをクリックしても何も起こりませんでした。また、ヘッダーを dirname( FILE ) とともに使用してドロップダウン メニューからのリダイレクトを処理すると、同様に機能しなくなりました (ただし、./ . dropDownMenuValue を使用すると、URL が domain/categoryChosen に正しく変更されます)。

ファイルを変更せずにローカルホストで作業し、Web ホストにアップロードし、htaccess を介してきれいな名前の URL を持つ動的な Web サイトで動作する、相対 URL に一貫した方法を使用するにはどうすればよいですか?

ありがとうございました、

これは、現在のファイルパスから相対パスを取得することが非常に困難であり、さまざまな問題を引き起こしていること、および dirname( FILE )で include ステートメントのみがうまく機能するように見える理由について、私にとって非常に不可解です。

編集: http://board.phpbuilder.com/showthread.php?10374336-RESOLVED-mod_rewrite-for-SEO-Friendly-URLs-and-relative-path-issue-fixes

他のサイトでこれを見つけましたが、localhost から Web に移動するたびにベースを変更する必要があります。私はそれを避けようとしています。明らかに、非常に基本的なことを行うための簡単な方法が必要です。Google や他のすべての人が、何かをライブにする準備ができたときに道を変えようとしているなんて信じられません。

4

1 に答える 1

0

メディアなどの公開ファイルには常に絶対パスを使用する必要があります。何らかの理由でそれを行いたくない場合、またはこの時点でサイトが複雑すぎる場合は、他のファイル タイプの書き換えルールを作成して、それらも正しいパスから含めることができるようにする必要があります。

于 2012-07-28T00:20:16.060 に答える