когда я пытаюсь сделать 301 редирект, я получаю внутренний код ошибки 500:
Rewriterule ^categoy/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)? product_detail.php?category=$1&subcategory=$2&product=$4 [QSA,NC]
Поле RewriteMap:
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
любое предложение, почему я получаю эту ошибку?
Спасибо
Директивы RewriteMap не разрешены в файле .htaccess. Это должно быть записано в файле конфигурации Apache httpd.conf.
Когда вы получите сообщение об ошибке 500 от Apache, Apache отметит Зачем это дало вам эту ошибку в вашем error_log
, куда бы это ни было настроено. Обратитесь к сообщению об ошибке в этом журнале, чтобы узнать, что вы делаете не так.
хорошо ... давайте проясним некоторые вещи.
Rewriterule ^categoy/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)? product_detail.php?category=$1&subcategory=$2&product=$4 [QSA,NC]
Здесь много лишнего, например, NC все равно не учитывает регистр ... Я немного отформатировал ваш код:
RewriteMap lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]
о каком правиле вы сейчас говорите? из вашего заголовка (301) я думаю второй. ваше условие перезаписи выглядит странно. но, однако, наиболее распространенной причиной ошибки 500 в отношении правил перезаписи является отсутствие разрешений. убедитесь, что вы делаете AllowOverride All
в конфигурации вашего сервера или переместите туда свои правила (что дает больше производительности, чем в файлах htaccess)