Apache mod_rewrite не отображает выражение в параметр

У меня есть сайт, который использует apache mod_rewrite и работает последние 6 месяцев без ошибок.

У меня есть следующее правило перезаписи:

 RewriteRule ^products/([az\-]+)/$ /products.php?category=$1 [NC,L] 

Вот код на моей странице products.php

 $category = $_GET['category']; if (isset($category)) { // do some processing here } else { header("Location: /500.html"); exit; } 

Примером ссылки, которая соответствует этому правилу, является /products/lighting-poles/

Кто-нибудь знает, почему фактический переписывание все еще происходит, но не сопоставляет ([az\-]+) с category=$1 ?

Дополнительная информация

Я заметил, что файл .htaccess на хосте прокомментировал строку Options +FollowSymLinks поэтому я сначала попытался снова включить это, только чтобы сайт вернул ошибку белого экрана apache 500 .

Больше из файла .htaccess

 <IfModule mod_rewrite.c> #Options +FollowSymLinks RewriteEngine On RewriteBase / # Add a trailing slash to paths without an extension RewriteCond %{REQUEST_METHOD} !POST RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ RewriteRule ^(.*)$ $1/ [L,R=301] # other rules including problem rule here </IfModule> 

Это звучит болезненно, как проблема с несколькими видами. Multiviews – это предмет согласования контента, который, если он включен, попробует несколько дополнительных вещей в конвейере сопоставления URL-файлов, чтобы попытаться найти файл, который сопоставляется с URL-адресом. Здесь у вас есть URL-адрес, например /products/blah , но у вас есть файл под названием products.php , поэтому мультивизоры могут попытаться сопоставить products с /products.php/blah . Таким образом, полностью обходя правило перезаписи, и вы не видите параметр category .

Где варианты, попробуйте добавить:

 Options -Multiviews