0

だから私は次のような単純な書き換えルールを使用しています:

RewriteEngine On
RewriteRule    ^foo/?$    foo.php    [NC,L]

foo.php に完全にリダイレクトされますが、foo.php 内のすべてのリンクと画像は、存在しないサーバー上のフォルダー foo から取得されているようです。たとえば、1.png は foo/1.png になり、index.html は foo/index.html になります。だから私の質問は: foo.php のファイルへのパスを変更せずに物事を正しくする方法はありますか?

4

3 に答える 3

1

コードでは、リソース (画像、css など) の書き換えルールを提供するか、実際のファイル/フォルダーの条件を追加する必要があります...

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

2 つの RewriteCond 行は、要求された URL が実際の実際のディレクトリ (!-d 部分) を指しているかどうかをテストし、2 番目の行はそれが実際のファイル (!-f) であるかどうかをテストします。

将来的には、次の 2 行を .htaccess ファイルに追加することで、mod_rewrite を簡単にデバッグできます。

RewriteLogLevel 3
RewriteLog "/path/to/a/file.log"
于 2012-06-16T22:26:54.253 に答える
1

訪問者のブラウザには、現在のページが にあると/foo/表示されるため、すべての相対 URL は で解決され/foo/ます。ベース URLを設定するか、サイトのルートを指すようにすべての相対 URL を更新する必要があります (たとえばrelative/path/url.jpg、 butは使用しないでください/relative/path/url.jpg)。

于 2012-06-16T16:42:56.047 に答える
0

2つの簡単な方法

  1. Ianzzが提案するように参照を絶対化する
  2. まだhtaccessを使用している参照オブジェクトのfooパスを削除します

    RewriteRule ^foo(/.*.(jpg|html|gif|css))$ $1 [L]

htaccess が混乱を引き起こし、htaccess が状況を修正し、コードを変更する必要がないため、私は 2 番目のソリューションを好みます。

于 2012-06-16T23:00:07.663 に答える