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 ответа:
После долгих поисков и выдергивания нескольких моих прекрасных волос я нашел решение.
Я только что добавил
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 установлена правильно.