Я использую следующий код в своем .htaccess:
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
# Special rewrite rules
# ideas/<id>
RewriteRule ^ideas/([0-9]+)$ idea\?id=$1
# users/<name>
RewriteRule ^users/(.+)$ users\?name=$1
Идеи/правило работает нормально, как я и ожидал, но пользователи/правило, похоже, не работает. Это дает мне ошибку HTTP 500, а в журнале Apache говорится, что превышено количество доступных перенаправлений:
[Вс, 14 июня 10:58:39 2009] [ошибка] [клиент 127.0.0.1] Запрос превысил ограничение в 10 внутренних перенаправлений из-за вероятной ошибки конфигурации. Используйте «LimitInternalRecursion», чтобы увеличить лимит, если это необходимо. Используйте «отладку LogLevel», чтобы получить обратную трассировку. Referer: http://localhost/users
URL-адрес, который я тестирую, — это /users/ross, который должен работать нормально. /ideas/1 определенно работает нормально.