9

この URL は書き換え中です

http://domain.com/embed/slideshow-image-list.js

これに

http://domain.com/code/embed/slideshow-image-list

現在のhtaccessコード

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
RewriteRule ^embed/([^\.]+)\.js$ http://domain.com/code/embed/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$1 [L]

現在は正しく書き換えられていますが、.js の URL にアクセスすると、完全な URL にリダイレクトされます。

リダイレクトせずにマッピングするだけです

4

1 に答える 1

19

ルールにドメインを指定しないでください。パスだけを指定してください。完全なドメインを使用すると、リダイレクトされます。

RewriteRule ^embed/([^\.]+)\.js$ /code/embed/$1 [L]

あるいは、結果のパスが実際のファイルではなく、index.php で処理する必要がある場合は[L]、次のルールが実行されるように を取り除きます。

RewriteRule ^embed/([^\.]+)\.js$ /code/embed/$1

mod_rewrite ガイドには次のように記載されていることに注意してください。これは、完全な URL パスが問題ないことを示しているように見えますが、必ずしも ServerAlias ではなく、ServerName と比較していると思います (100% 確信があるわけではありませんが、常に使用してきました非リダイレクトの書き換えを行う際に完全な URL ではなくパス):

絶対 URL

絶対 URL が指定されている場合、mod_rewrite は、ホスト名が現在のホストと一致するかどうかを確認します。存在する場合、スキームとホスト名は取り除かれ、結果のパスは URL パスとして扱われます。それ以外の場合、指定された URL に対して外部リダイレクトが実行されます。外部リダイレクトを現在のホストに強制的に戻すには、以下の [R] フラグを参照してください。

于 2013-01-20T02:40:46.257 に答える