0

最近、書き換えを作成するために htaccess ファイルを利用しています。

すべてがうまく機能しますが、最近、次のようにカテゴリ名とそれに続く製品を含めるように変更されました。

http://localhost/Limestone_Tiles/products/Antalya_Blanc.html

以前は次のとおりでした。

http://localhost/products/Antalya_Blanc.html

すべてが正常に機能したとき。書き換えルールは次のとおりです。

RewriteRule ^products/(.*).html$ product_details.php?&furl=$1 [NC,L]
RewriteRule ^products/images/(.*)$ images/$1
RewriteRule ^products/picture_upload/(.*)$ picture_upload/$1
RewriteRule ^products/thumbnail.php(.*)$ thumbnail.php$1

したがって、新しい変更に対応するために、次のように書き換えルールを変更しました。

RewriteRule ^(.*)/products/(.*).html$ product_details.php?&furl=$1 [NC,L]
RewriteRule ^(.*)/products/images/(.*)$ images/$1
RewriteRule ^(.*)/products/picture_upload/(.*)$ picture_upload/$1
RewriteRule ^(.*)/products/thumbnail.php(.*)$ thumbnail.php$1

今、この種の作品は

http://localhost/Limestone_Tiles/products/Antalya_Blanc.html

読み込まれますが、どの画像も読み込まれません。ページが読み込まれると意味がありません。なぜ画像がないのですか?

書き換えルールを次のように変更すると:

RewriteRule ^Limestone_Tiles/products/images/(.*)$ images/$1

その特定のカテゴリの画像が読み込まれます。

画像の URL をブラウザに入力すると、次のようになります。

http://localhost/Limestone_Tiles/products/images/face.png

次のメッセージが表示されます。

要求された URL /images/Limestone_Tiles は、このサーバーで見つかりませんでした。

/images/Limestone_Tiles はアドレス バーに貼り付けたばかりの URL ではないため、これも奇妙です。

おそらく私の書き換えルールはまだ間違っていますか?

事前にご協力いただきありがとうございます。

4

1 に答える 1

1

これは、実際に必要な一致ではなく、最初にグループ化された一致を逆参照するグループ化がルールに含まれているためです。次のルールがあるとします。

RewriteRule ^(.*)/products/(.*).html$ product_details.php?&furl=$1 [NC,L]

そして、この URL:

http://localhost/Limestone_Tiles/products/Antalya_Blanc.html

書き換えられた URI は次のようになります。/product_details.php?&furl=Limestone_Tiles

以前は、古いルールでは、次のように書き直されていました。/product_details.php?&furl=Antalya_Blanc

それが意図した動作である場合は、イメージ ルールに違反していることを除けば問題ありません。

RewriteRule ^(.*)/products/images/(.*)$ images/$1

は、実際の画像ではなく、$1最初のグループ化された一致(.*) のものを後方参照します。/products/images/次のように変更する必要があります。

RewriteRule ^(.*)/products/images/(.*)$ images/$2

書き換えルールを作成して修正するよりも、HTML コンテンツを変更して、そこでこの画像を修正したほうがよいでしょう。これをページのヘッダーに追加してみてください。

<base href="/">
于 2013-06-28T18:31:02.053 に答える