Правило mod_rewrite не работает - PullRequest
2 голосов
/ 10 ноября 2009

В моем 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

Есть идеи ??

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

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

0 голосов
/ 10 ноября 2009

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

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

  RewriteLog "/tmp/rewrite.log"
  RewriteLogLevel 9
...