htaccess rewrite работает автономно на WAMP, но не Онлайн на Linux host


Я просто объясню свою проблему здесь:

http://mysite.com/movie/20000

Следует переписать на

http://mysite.com/movie.php?id=20000

Мой файл htaccess:

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie/([0-9]+)$ movie.php?id=$1

На моей установке localhost WAMP это работает нормально, но когда я помещаю его в сеть на моем хосте linux, он не полностью работает. Он действительно идет в кино.php страница, но, кажется, он не дает получить идентификатор параметра.

Редактировать:

Если я использую

Options +FollowSymlinks
RewriteEngine On
RewriteRule ^movie([0-9]+)$ movie.php?id=$1

Затем

http://mysite.com/movie20000

Переходит на правильную страницу, но я хотел бы /movie/20000 и не только /movie20000

Также кажется, что мой хост автоматически переписывает визит в mysite.com/movie в mysite.com/movie.php

2 2

2 ответа:

После долгих поисков и выдергивания нескольких моих прекрасных волос я нашел решение.

Я только что добавил

Options -MultiViews

В мой файл htaccess, и это исправило его.

Почему? Потому что.php добавлялся в URL-адреса без расширения, в котором я действительно не нуждался.

Это должно сработать.

RewriteRule ^movie/([0-9]+)$ http://mysite.com/movie.php?id=$1 [NC,L]

Не забывайте [NC, L] это означает, что Регистр нечувствителен, последнее правило... Если вы этого не сделаете, он будет продолжать обрабатывать ваши правила htaccess, возможно, вызывая другие.

Тем не менее, материал ниже-хороший совет.... :)

Проверьте, загружается ли модуль перезаписи с помощью apache. Поищите эту строку в httpd.файл conf:

LoadModule rewrite_module modules/mod_rewrite.so

Проверьте, позволяет ли ваша конфигурация apache .файлы htaccess для вашей системы или виртуального хоста определение.

Кроме того, тест с более простым перезаписать catch all и проверить, что в одиночку, чтобы увидеть, если он работает вообще, как это (избавиться от всего остального в файле htaccess, чтобы ограничить тест):

RewriteEngine On
RewriteRule ^(.*)$ http://www.google.com [L,R=301]

Любой запрос на ваш сайт должен идти в google, если конфигурация для apache установлена правильно.