2011-01-09 4 views
0

Моего файла Htaccess является следующее:ModRewrite работает только для некоторых вариантов

RewriteEngine On 
RewriteRule ^blog/post/([0-9]+) /blog.php?post=$1 
RewriteRule ^blog/page/([0-9]+) /blog.php?page=$1 
RewriteRule ^work/([0-9]+) /work.php?ID=$1 

Правило work.php работает, но эти два правила блог не являются. Они привыкли ко всем работам, но недавно я переехал на свой сервер. Любые идеи, почему это было бы?

Заранее благодарен!

Редактировать: Woah, я заметил, что у меня была рабочая папка, но нет папки для блогов, поэтому я ее создал, и теперь это работает. Любые идеи почему?

ответ

1

Я только что настроил (виртуальный) сервер на своей локальной установке Apache 2.2, запустив PHP 5.2 в качестве модуля. Корень документа сервера содержал только файлы php (упрощенно) обрабатывать приведенные выше примеры (просто повторяя параметры из $ _GET). Мой файл .htaccess в корневом каталоге документа содержит только то, что вы указали выше, и ничего больше. Корень документа не содержал подкаталогов/work или/blog (или/blog/post или/blog/page).

У меня не возникало никаких проблем с переписыванием URL-адресов, ориентированных на SEO, в соответствующие файлы PHP, что, в свою очередь, отражало значения параметров, которые я ожидал от $ _GET.

Существует нечто иное, чем mod_rewrite, требующее наличия подкаталогов, и Apache поражает (и, следовательно, требует), прежде чем он обработает правила перезаписи. Не уверен, что это такое, но это не похоже на mod_rewrite, учитывая правила, которые у вас есть выше.

Смежные вопросы