@ Esben
Переписать имя хоста немного сложнее. У вас есть доступ к журналу ошибок сервера? Потому что некоторые могут использовать информацию о причине 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
все немного по-другому ..
А это:
RewriteRule ^([^/]+)/([^/]?)$ index.php?worker=$1¶ms=$2 [L]
Похоже, вы пытаетесь сказать "Измените" foo / bar "на" index.php? Worker = foo & params = bar "". Если это правильно, это, вероятно, не будет работать. Поскольку вы находитесь в файле .htaccess
, вы сопоставляете путь к файловой системе, , а не 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]
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]
Я не уверен насчет влияния SKIP
на RewriteCond
операторов, смешанных с RewriteRule
s, но попробуйте вышеописанное и посмотрите, подходите ли вы ближе.