2017-05-26 9 views
1

私の.htaccessファイルがhttp://example.com/animal.php?id=numberからhttp://example.com/animal/numberに変更されました。Htaccess URLリライト、新しいフォルダですが、親フォルダにファイルが読み込まれます

http://example.com/animal/numberに移動した場合、animal.phpの他のファイルは/animalというフォルダに読み込まれますが、このフォルダは存在しません。

/animal/numberページに行くと、コードはanimal.phpの他のファイルを親フォルダ(http://example.com/)に読み込みます。

例:私はanimal.phpheader.phpを含めていて、これが動作しているが、私は/animal/numberページに行けばheader.phpない/animalフォルダ内にあるため、これは、動作していません。

マイ.htaccessファイル:

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    #RewriteBase /htdocs/test 

    RewriteRule ^animal/([A-Za-z0-9-]+)/?$ animal.php?id=$1 [NC,L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php?page=$1 [QSA] 
</IfModule> 
+0

どのように 'header.php'を含めていますか? – MrWhite

答えて

0

あなたが記述するように見える何がクライアント側相対URLの問題です。 相対のURLをクライアント側のHTMLに使用している場合は、ドキュメントルート(URLに指定されている)の/animal「サブディレクトリ」に対して相対的にリソース(CSS、JS、画像など)実際の文書の場所)。ブラウザはURLを見るだけで、基礎となるファイルシステムのパスではありません。

クライアント側のHTMLでは、ルート相対URL(スラッシュで始まる)または絶対URL(スキーム+ホスト名)を使用して解決する必要があります。また、HTMLのheadセクションにbase要素を設定して、相対リンク/ URLを解決する際にブラウザがどのURLをベースURLとして使用するかを指示することもできます。 (ただし、例えば、単にフラグメント識別子とページ内のリンクを使用している場合はbase要素を使用しての注意点があることに注意してくださいフォームhref="#internal-id"の - 。。これは相対 URLと見なされているので)

URLの構造とは何の関係もありません

私は...もつともheader.php in animal.php`

を含むサーバー側を意味し、「header.phpを含む」だ(例えば。include('header.php'))が含まれ、相対URL(中HTML)、したがってURLの書き換えやあなたのとは関係ありません0ファイル。

JavaScript AJAXリクエスト(またはさらにフレーム)のようなものが含まれていない限り... (したがって、上記のコメントで私のクエリ。)この場合、上記と同じ相対URLの問題が発生します。

関連する問題