2011-07-08 4 views
0

mod_rewriteはいつも私の最も弱い分野の一つです。私はしばらくこの解決策を見つけようとしましたが、多くの回答は単にmod_rewrite documentationにリンクしています。これは私には役に立ちません。私は自分の問題がかなりシンプルだと信じています。だから、今度は誰かが私にフリーズを与えてもらえないことを願っています。Apache2とDrupalの古いURLのパターンのリダイレクト

私はDrupalのためのいくつかの既存のmod_rewriteルールを持っている:

もちろん、正常に動作し、
 
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

。彼らはDrupalルールを購入しています。

私は、私はこれにルールを変更し

 /snippets/name-of-article

 /snippet/yyyy-MMM-dd/name-of-article

の要求をリダイレクトする:

 
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^snippet/20[0-9]{2}-[a-z]{3}-[0-9]{2}/(.*)$ snippets/$1 [L,R=301] ### MY NEW RULE 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

私の新しいルールが期待どおりに動作、および実行正しくリダイレ​​クトします。しかし、CSSやJSリクエストには影響を与えているようです。エラーログにスタイリングやスクリプト、g、404エラーがないことが明らかです。 CSSまたはJSファイルを直接表示しようとすると、親ドキュメントを要求したのと同じHTML出力が得られます。だから明らかに、私のルールは壊れています。

なぜこれが難しいのか分かりません - 単純なようです。

答えて

0

さて、まあ、私は何かを学んだ。 RewriteCondは、先行するRewriteRuleに影響します。ダー!

これは動作します:

 
RewriteEngine on 
RewriteBase/

RewriteRule ^snippet/20[0-9]{2}-[a-z]{3}-[0-9]{2}/(.*)$ snippets/$1 [L,R=301] ### MY NEW RULE 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 
関連する問題