2011-02-04 5 views
0

彼女が行くので、私は、任意の運なしで私の問題への答えのためのネットを検索した:mod_rewriteの力小文字のURL

を私はSEOの目的のために私のmod_rewriteをやり直していると私は、すべてのURLが小文字になりたい、のためにインスタンス:

http://BLAbla.com/ 

http://bla.com/ 

なっ現在、私の.htaccessは次のようになります。

RewriteEngine on 

RewriteMap lc int:tolower 
RewriteCond %{REQUEST_URI} [A-Z] 
RewriteRule (.*) ${lc:$1} [R=301,L] 

RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule (.*)$ http://www.example.com/$1 [R=301,L] 

RewriteRule ([\w]*)/$ http://%{HTTP_HOST}/$1 [R=301,L] 

RewriteRule ^([^/]+)/([^/]?)$ index.php?worker=$1&params=$2 [L] 

http://localhost/site/を実行すると、エラー500が表示されます。私は基本的なreg exと非常に限られたmod_rewriteしか知りませんので、ここでエラーを見ることはできません。私がrewritemap行を削除した場合、ページはエラーを起こさない。私のサーバーや何かでrewriteemapがサポートされていませんか?

.htaccessファイルに関するその他のコメント

は:)お時間を

おかげで非常に非常に歓迎されています。ホスト名を書き換え@Esben

答えて

5

は少しトリッキーです。サーバーエラーログにアクセスできますか?それはいくつかは、500

の原因についての情報を使用して可能性があるのでそれだけではわかりやすくするために引用符でパラメータを囲むすることをお勧めします:

RewriteMap lc int:tolower 
RewriteCond "%{REQUEST_URI}" "[A-Z]" 
RewriteRule "(.*)"   "${lc:$1}" [R=301,L] 

[L]がために終了処理にこれを強制しようとしていますこのリクエストは、URIに対して処理がさらに必要な場合は、リクエストが再送信されたときに発生することを意味します。

RewriteMap lc int:tolower 
RewriteCond "%{REQUEST_URI}" "[A-Z]" 
RewriteRule "(.*)"   "${lc:$1}" [E=REDIRECT:TRUE] 

RewriteCond "%{HTTP_HOST}" "!^www\." [NC] 
RewriteRule "^"    "-"  [E=REDIRECT:TRUE,E=PREFIX_WWW:TRUE] 

何がやろうとしている以下:あなたは、要求は一度だけいじる過程を経るように、あなたの変更をバッチ処理を検討する必要がありますか?

RewriteRule ([\w]*)/$ http://%{HTTP_HOST}/$1 [R=301,L] 

(ファンキー正規表現にもかかわらず)効果が/「REQUEST_URIがで終わる場合」「それを取り除き、リダイレクト」でありますそれはあなたが欲しいものですか? ..物事は.htaccessファイルに少し異なっていることに注意して

そして、これを負担する:あなたは「インデックス」に任意の 『FOO /バー』に変更言おうとしているよう

RewriteRule ^([^/]+)/([^/]?)$ index.php?worker=$1&params=$2 [L] 

に見えます。 php?worker = foo & params = bar "'。それが正しいのであれば、おそらくうまくいかないでしょう。ファイルが.htaccessなので、ファイルシステムのパスと照合します。ではなく、です。

ので、この試してみてください。

RewriteMap "lc"     "int:tolower" 

RewriteCond "%{REQUEST_URI}"  "[A-Z]" 
RewriteRule "(.*)"    "${lc:$1}" [E=REDIRECT:TRUE] 

RewriteCond "%{HTTP_HOST}"  "!^www\." [NC] 
RewriteRule "^"     "-"   [E=REDIRECT:TRUE,E=PREFIX_WWW:TRUE] 

RewriteCond "${ENV:REDIRECT}" "!TRUE" 
RewriteRule "^"     "-"  [SKIP=2] 
RewriteCond "${ENV:PREFIX_WWW}" "TRUE" 
RewriteRule "(.*)"    "http://www.${HTTP_HOST}/$1"  [R=301,L] 
RewriteRule "^"     "-"        [R=301,L] 

RewriteRule "^([^/]+)/([^/]?)$" "index.php?worker=$1&params=$2" [PT] 

を私はRewriteRule Sと混合RewriteCond書類にSKIPの影響についてはよく分からないんだけど、試してみるの上に与え、あなたはどんな近づいているかどうかを確認します。

関連する問題