Назад | Перейти на главную страницу

Проблемы с mod_rewrite и расширениями PHP - помогите создать правильный файл .htaccess

Я ищу набор простых правил и перенаправлений для своего сайта. Я перепробовала столько комбинаций, что начинаю путаться.

Я не знаю, как это настроить. Как правило, без мод-перезаписи я бы использовал относительные пути для ссылки на файлы:

<a href="link.php">Link</a>

если он находится в том же каталоге.

Теперь я бы хотел использовать это:

<a href="link">Link</a>

И так, если вы перейдете на эту страницу:

localhost/mysite/link

он приведет вас в нужное место, а именно:

localhost/mysite/link.php

Но также, на многих уровнях каталогов я бы хотел, чтобы это работало:

localhost/mysite/group/link2

пойдет к:

localhost/mysite/group/link2.php

и:

localhost/mysite/group/section/link3

пойдет к:

localhost/mysite/group/section/link3.php

Но тогда во всех этих случаях, если кто-то наберет это:

localhost/mysite/group/section/link3.php

в строке URL-адреса будет показано следующее:

localhost/mysite/group/section/link3

Спасибо

РЕДАКТИРОВАТЬ

Я думаю, что отчасти моя проблема заключалась в том, что у меня были эти каталоги в корне моего сайта:

product1, product2, product3

и у меня также были эти файлы в каталоге с именем products:

product1.php, product2.php, product3.php

В .htaccess файл не работал, пока я не изменил эти имена файлов на что-то другое, отличное от имен каталогов. Имеет ли это смысл? Это ожидаемое поведение?

РЕДАКТИРОВАТЬ 2

Я уверен, что кто-то зайдет в этот пост в поисках помощи, аналогичной тому, что я делал, когда писал этот вопрос. Здесь и на stackoverflow.com есть много хороших ответов на mod_rewrite. Я рекомендую прочитать их и попробовать эти условия и правила на тестовом экземпляре, чтобы понять их.

Я также понял, что использование частой очистки кеша браузера и активация RewriteLog очень важны для выяснения этого вопроса. Например:

RewriteLog "rewrite.log" RewriteLogLevel 7

Радоваться, веселиться

Вы можете сделать это с помощью .htaccess. Правильный код для этого выглядит следующим образом:

RewriteEngine на

RewriteCond% {REQUEST_FILENAME}! -D

RewriteCond% {REQUEST_FILENAME} .php -f

RewriteRule ^ (. *) $ 1.php