2009-07-09 11 views
1

にないように言われます、物事書き換え:mod_rewriteのは、それが明示的に私は私の.htaccessファイルに次の書き換えを持って

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule \.(css|jpe?g|gif|png)$ - [L] 
RewriteRule ^index/error/([^/\.]+)/?$ index.php?error=$1 [L] 

あなたが言うことができるように、どんなの.css/.JPG/.jpegファイル/ .GIFを書き換えないことになっていますが/.pngファイル。それにもかかわらず、それはそうしています。本当に奇妙なのは、index.php?error = $ 1にリダイレクトする/ index/error/whateverの行が完全に動作しているということです。私の正規表現に何か問題はありますか?これを行うより良い方法はありますか?

TIA。後で問題を修正するに多くの試みの後

EDIT:

私は実際にこれを行うには異なる、(私の意見では)よりエレガントな、確かに簡単な方法を発見しました。私の問題は、私のファイルにhref = "./ css/styles.css"というCSSファイルへのポインタが含まれていることでした。 styles.cssファイルは決して動かすことはありません。そこで、href要素を相対URIの代わりに絶対URI(http://www.mysite.com/css/styles.css)に変更しました。問題が解決しました!彼らの助けを借りてくれた皆様に感謝します。

+0

いいですね。 Apacheログファイルから、何が起こっているのかを正確に示すエントリを投稿できますか? –

+0

ルールをcss、jpg ...ファイルに書き換えていますか? –

答えて

0

私は実際にこれを行うよりエレガントで確かに簡単な方法を見出しました。私の問題は、私のファイルにhref = "./ css/styles.css"というCSSファイルへのポインタが含まれていることでした。 styles.cssファイルは決して動かすことはありません。そこで、href要素を相対URIの代わりに絶対URI(http://www.mysite.com/css/styles.css)に変更しました。問題が解決しました!彼らの助けを借りてくれた皆様に感謝します。

+0

これは、たとえ置換がないとしても、 ' - 'が本当の絶対URIから相対的に書き直しのように見えるかどうか疑問に思います。 –

+0

私も。私は十分にトラブルシューティングをするのに十分なことを知りたがっています。 – benjy

2

あなたがどうかを知るためにいいだろうという、

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !\.(css|jpe?g|gif|png)$ 
RewriteRule ^index/error/([^/\.]+)/?$ index.php?error=$1 [L] 

のようにまた、あなたが失敗し、どのようにしているものをリクエスト言及していない、拡張子のそのセットにルールを適用することを避けるためにするRewriteCondを使用することができますこれはあなたの問題を解決するのに十分ではありません。

+1

+1私はこれがまさにURL書き換えで遊んでいた(RewriteCondを使用していない)問題でした。 –

+0

残念ながら、いいえ、そうです、それはそれを解決していないようです。私が持っている特定の問題は、書き換えルールに従うのではなく、Safari(とFirefox、およびStainless)がディレクトリとして/ index/error/-1 /(たとえば)を探していることです。ルートディレクトリに置いておきます。それで十分だと思いますか? – benjy

1

URLが変更されたときに '最後'のルールは.htaccessではあまり役に立ちません。mod_rewrite techを参照してください。そこには、リクエスト処理の後半で書き換えが起こるため、ディレクトリを知っているが、URLを書き直すには遅すぎるため、これが表示されます。これは、新しい要求を作成することによってこの問題を解決し、新しい要求が "最後の"フラグを効果的に無効にする同じ規則によって再度処理されるようにします。

これはあなたの場合にどのように当てはまるかわかりません。 ' - 'はURLの書き換えであってはなりません。 this web siteから、次のコマンドを使用してリライトをデバッグすることをお勧めします。なぜルールが無視されているように見えるのでしょうか。

You can debug mod_rewriting adding those two directives in httpd.conf: 
    RewriteLogLevel 9 
    RewriteLog "<path-to-log-file" 

正規表現は、私にはよさそうだと私はa mod_rewrite exampleにほぼ同じものを見ました。

関連する問題