Хм. Не знал, что можно передать параметр id. Классно, что вы это откопали.
Кстати, можно обойтись одним правилом:
RewriteRule ^/?([0-9_+]+)(\.html)?$ index.php?id=$1 [L,QSA]
QSA необходимо если вы будете передавать какие-то get параметры страницам.
Нехорошо это тем, на мой взгляд, что не решает проблемы дублирования url в индексах поисковых систем. Почему это плохо, я до конца не понял, т.к. только начал изучать SEO, но, говорят, что это нехорошо.
Кстати, а как такая строчка будет раотать совместно с плагином SEO Strict URL’s? Сейчас попробую проверить. Может и с ПС удасться утрясти таким образом.
Поздравляю, с найденным решением!
Проверил на совместимость с SEO Strict URLs.
Работает. Действительно перебрасывает на страницы с алиасами!
Строчку сделал немного универсальнее (так как у меня суффикс ’/’)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?([0-9_+]+)(/|\.html)?$ index.php?id=$1 [L,QSA]
Думаю теперь тему точно можно закрывать.
А в чем заключается неправильность обработки?
У меня по несуществующему запросу редиректит на страницу, определенную как 404, и выдает статус 404.
Андрей, алогично рассуждаешь:)
я говорю про то, как у меня, а у меня, повторюсь, вот так: _s-g-k.ru/fuck/ !!!
при этом ошибка выскакивает для реально несуществующих страниц. с неопубликованными страницами, например, всё нормально.
при этом ошибка вылетает именно после включения сеострикта.
я просто предупреждаю: надо быть бдительным. возможно, баг только на релизе 2006-го года. я не проверял.
Стараюсь быть бдительным, но не пойму в чем разница наших с тобой запросов.
Ввожу my.site/fuck/ которой не существует — перебрасывает на 404 страницу, как и положенно. Статус ответа — 404.
Может и правда у тебя релиз старый?