@Esben
ホスト名の書き換えは少し注意が必要です。サーバーエラーログにアクセスできますか?500の原因に関する情報を使用している可能性があるためです。
わかりやすくするために、パラメーターを引用符で囲むことをお勧めします。
RewriteMap lc int:tolower
RewriteCond "%{REQUEST_URI}" "[A-Z]"
RewriteRule "(.*)" "${lc:$1}" [R=301,L]
[L]
これにより、このリクエストの処理が強制的に終了します。つまり、URIに対して実行する作業がさらにある場合は、リクエストが再送信されたときに発生します。リクエストが変更プロセスを1回だけ通過するように、変更をバッチ処理することを検討することをお勧めします。
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
ファイル内では物事が少し異なることに注意してください。
この:
RewriteRule ^([^/]+)/([^/]?)$ index.php?worker=$1¶ms=$2 [L]
「任意の「foo/bar」を「index.php?worker = foo&params=bar」に変更してください」と言っているようです。それが正しければ、おそらくうまくいかないでしょう。ファイル内にいるので、URIではなく.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¶ms=$2" [PT]
sが混在するステートメントSKIP
への影響についてはわかりませんが、上記を試してみて、もっと近いかどうかを確認してください。RewriteCond
RewriteRule