RewriteRule ^([^/]+) index.php?id=$1 индекс сообщений вместо введенного текста

Если я сделаю это, набрав /?id=some_text в URL-адресе, тогда скрипт index.php будет работать так, как должен, но если я сделаю /some_text, тогда index.php всегда получит идентификатор со значением «index».

Сначала у меня было RewriteRule ^([^/]+) ?id=$1, но вместо веб-страницы возвращалось «Внутренняя ошибка сервера», затем я изменил его на RewriteRule ^([az]+) index.php?id=$1, и я перестал получать страницу с ошибкой, но скрипт начал получать «индекс "в качестве значения независимо от того, что я набрал

Это правило работало на локальной машине с использованием MAMP, но когда я загрузил его на сервер, оно перестало работать.

Файл .htaccess для этой папки содержит только это правило

RewriteEngine on
RewriteRule ^([^/]+) ?id=$1

person esmajic    schedule 11.01.2009    source источник


Ответы (1)


Я полагаю, что он, вероятно, пытался выполнить рекурсию через index.php, поскольку он соответствует правилу.

Пытаться:

RewriteEngine On
RewriteCond  %{REQUEST_URI}  !index
RewriteRule ^([^/]+) index.php?id=$1 [L]

RewriteCond должен гарантировать, что правило не применяется к результатам самого себя. И [L] должен убедиться, что он не пытается применить какое-либо другое правило.

person Allain Lalonde    schedule 12.01.2009