правило mod_rewrite не работает

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

RewriteRule ^([^/.]+)/?$ list.php?categoryShortForm=$1&locationShortForm=world      [QSA]
RewriteRule ^([^/.]+)/([^/.]+)/?$ list.php?categoryShortForm=$1&locationShortForm=$2    [QSA]
RewriteRule ^([^/.]+)/([^/.]+)/[^/.]*-p([0-9]+)/?$ view.php?categoryShortForm=$1&locationShortForm=$2&postingId=$3  [QSA]

На моем локальном хосте (windows, xampp) все работает нормально. На моем реальном сервере (linux, apache) первые 2 правила работают нормально, а там 3-е нет.

Например:

/plastic-surgery/california-usa/ работает нормально, но /plastic-surgery/los-angeles-california-usa/test-1-p1 выдает ошибку 404.

Любая идея??


person Nathan H    schedule 09.11.2009    source источник
comment
Вы уверены, что view.php существует на сервере?   -  person Greg    schedule 10.11.2009
comment
Вы действительно используете Apache 2? Если да, то я где-то читал, что он имеет некоторые отличия от предыдущей версии.   -  person yoda    schedule 10.11.2009
comment
Вы пытались просмотреть журналы сервера Apache для получения более подробных сообщений об ошибках?   -  person jkndrkn    schedule 10.11.2009


Ответы (2)


Убедитесь, что вы можете перейти непосредственно к целевым URL-адресам. Если mod_rewrite перезаписывает что-то несуществующее, вы получите ошибку 404. Может помочь поднять уровень журнала mod_rewrite до высокого значения, чтобы вы могли видеть, во что он перезаписывает.

person skaffman    schedule 09.11.2009
comment
*я *тупой*! Я не загрузил целевой файл view.php. Спасибо! - person Nathan H; 10.11.2009

Я немного не понимаю, как должен работать ваш рабочий URL. Все три ваших шаблона начинаются с «одного или нескольких символов без косой черты и точки» ([^/.]+), но URL-адреса, входящие в сопоставление с шаблоном, начинаются с косой черты: «/plastic-surgery/california-usa/ ".

Вы включили ведение журнала mod_rewrite и проверили, что на самом деле делает mod_rewrite?

  RewriteLog "/tmp/rewrite.log"
  RewriteLogLevel 9
person Tommy McGuire    schedule 09.11.2009