мод-перезапись не работает на живом сервере - PullRequest
0 голосов
/ 29 марта 2012

У меня есть простой RewriteRule ниже, который отлично работает на моем локальном компьютере, но он не работает, когда я загружаю на свой действующий сервер.

Ошибка:

Не найдено Запрошенный URL /redirect:/jobs.php/1/field-engineer.php/1/field-engineer.php не был найден на этом сервере.

Кроме того, при попытке использовать ErrorDocument для обработки запроса была обнаружена ошибка 404 Not Found.

.htaccess:

Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)\.htm $1.php [NC]
RewriteRule jobs/([0-9]+)/(.*)/ jobs.php?id=$1 [NC]
RewriteRule testimonial-details/([0-9]+)/(.*)/ testimonial-details.php?id=$1 [NC]
RewriteRule testimonials/([0-9]+)/(.*)/ testimonials.php?id=$1 [NC]

Любая помощь будет с благодарностью.

1 Ответ

0 голосов
/ 29 марта 2012

Вы проверили, был ли загружен ваш модуль перезаписи? Кстати, вы должны проверить это в вашем htaccess:

<IfModule mod_rewrite.c>
// your rewrite stuff here
</IfModule>

Edit:

Может быть, это могло бы помочь. Попробуйте установить флаг PT на ваше первое правило перезаписи

RewriteRule ^(.*)\.htm $1.php [NC,PT]

Это скажет движку сделать второй чистый путь для сгенерированного URL. Потому что по твоему правилу странное поведение.

URL

jobs/1/civil-engineer.html переписывается как jobs/1/civil-engineer.php

но следующее правило

jobs/([0-9]+)/(.*)/ ожидает URL-адрес типа jobs/1/civil-engineer.php/

Я провел некоторое тестирование, но удаление '/' позволило избежать только определенных ошибок, но поведение по-прежнему было странным. Единственный способ, который я нашел, - добавить флаг PT или изменить правило для

.

RewriteRule jobs/([0-9]+)/(.*)\?php jobs.php?id=$1

...