2012-06-06 2 views
0

Я пытаюсь использовать mod_rewrite для очистки некоторых динамических URLS, которые у меня есть.Получение 404 с mod_rewrite

Мой .htaccess в корне сайта выглядит следующим образом:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^equipment/AlarisSystem/([^/]*)/([^/]*)$ /equipment/AlarisSystem/?manu=$1&model=$2 [L] 

Я хочу переписать от http://www.mysite.com/equipment/AlarisSystem/?manu=test1&model=test2 до http://www.mysite.com/equipment/AlarisSystem/test1/test2

Если бы я типа в вышеупомянутую «чистый» адрес я получаю ошибка 404. Я провел исследования и не могу найти, где я ошибаюсь. И да, mod_rewrite включен. Спасибо за вашу помощь.

EDIT Я знаю, что мой файл .htaccess читается. Я сделал это, чтобы проверить:

Redirect /google.html http://www.google.com и это правило работает правильно.

ответ

1

Ваше правило кажется правильным, но вы, вероятно, не переписываете в нужное место. Где сценарий, в который вы хотите переписать? Кажется, вы переписываете в каталог.

Возможно, у вас есть дополнительные правила перезаписи, которые необходимо применять дальше, в этом случае вам следует избавиться от флага last rule [L]. Наличие там делает mod_rewrite прекращение применения правил.

Если вы хотите проверить, был ли ваш запрос пойман или нет, вы можете установить RewriteLog и RewriteLogLevel директивы, которые помогут вам.

Для быстрой проверки вы также можете установить флаг [R], а затем вы сможете увидеть в своем браузере, куда вас отправляет mod_rewrite.

Update: Ваше оригинальное правило работает для меня с файлом index.php в каталоге, даже, но, возможно, вы можете try using a RewriteBase решить эту проблему:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteBase /equipment/AlarisSystem/ 
RewriteRule /([^/]*)/([^/]*)$ index.php?manu=$1&model=$2 [L] 

Я не вижу никаких оснований для этого правила чтобы не работать. Исходная ошибка, которую вы получаете, вероятно, связана с тем, где вы делаете свое переписывание. Это из файла .htaccess в корне.

+0

Это имеет смысл. Однако он не работает. Мне нужно разместить это правило перезаписи в файле vhosts? – mdance

+0

Я неправильно понял ваш вопрос, я думал, что у него есть? перед /. Я отредактирую. – mpontes

+0

Спасибо. Я с нетерпением жду вашего редактирования :) – mdance

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