"RewriteRule ^ ([^ /] +) index.php? Id = $ 1" отправляет "index" вместо введенного текста - PullRequest
2 голосов
/ 12 января 2009

Если я сделаю это, набрав /?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

1 Ответ

1 голос
/ 12 января 2009

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

Попытка:

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

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

...