Помогите с модРерайтом пож.

marshall123
На сайте с 04.05.2008
Offline
62
614

Начал делать новый проект , хотелось бы сделать так , чтобы , например index2.php выглядел ->> /index2/ , но чтобы при этом был редирект с index2.php на /index2/

Казалось бы все просто , но у меня что-то не получается , надеюсь вы сможите помочь , есть 2 вопроса:

1)Вот что у меня в .htaccess

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)/$ $1.php [L]
RewriteRule ^(.*)\.php$ /$1/ [R]

Вроде все правильно , обе строки работают по отдельности , первая - сам рерайт , вторая редирект , но когда вместе IE начинает бесконечно обновлять страницу , выводя белый экран , а ФФ3 выдает:

Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

И второй вопрос:

2)Когда делал без редиректа /index2/ работал , но он не находил картинок и CSS файла , на них тоже нужно писать рерайт? Как? Обхясните на примере пожалуйста.

Заранее спасибо , надеюсь поможите решить проблему.

Itiro
На сайте с 08.09.2007
Offline
27
#1
marshall123:
2)Когда делал без редиректа /index2/ работал , но он не находил картинок и CSS файла , на них тоже нужно писать рерайт? Как? Обхясните на примере пожалуйста.

У картинок заданы относительные пути. Когда адрес страницы /index2/, тогда такие картинки ищутся внутри этого "каталога".

Для исправления ситуации пропишите <base href="http://сайт.ru/"> после тэга <head>, либо исправьте все ссылки на абсолютные.

marshall123:

Вроде все правильно , обе строки работают по отдельности , первая - сам рерайт , вторая редирект , но когда вместе IE начинает бесконечно обновлять страницу

Правильно:

сначала вы перенаправляете с /index2/ на /index2.php

а после этого с /index2.php на /index2/ и срабатывает первое правило.

marshall123
На сайте с 04.05.2008
Offline
62
#2
Itiro:
Правильно:
сначала вы перенаправляете с /index2/ на /index2.php
а после этого с /index2.php на /index2/ и срабатывает первое правило.

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

Knave
На сайте с 01.02.2007
Offline
48
#3

Т.к. проект новый, думаю нет смысла делать редирект с index2.php на /index2/

Пишите везде сразу "красивые" урлы и все. На крайний случай, адреса типа index2.php можно закрыть в robots.txt от индексации.

Такое перенаправление написать можно, но это будет как-то извращенно :)

That's what's the deal we're dealin' in
marshall123
На сайте с 04.05.2008
Offline
62
#4

у меня просто будет каждая страница в отдельном PHP , ибо не умею работать с Mysql .. А каждая страница в *.PHP выглядела бы не очень красиво ..

DR
На сайте с 18.08.2007
Offline
59
#5

RewriteEngine On

RewriteRule ([a-z0-9_]*)/ $1.php

А зачем делать обратную переадресацию?

Вы не светите index2.php нигде (проект-то новый) и никто и никогда не узнает...

Com2b.ru - профессиональное создание Интернет-сайтов (http://www.com2b.ru). Ufa-host.ru - лучший хостинг поволжья и урала (http://www.ufa-host.ru).
marshall123
На сайте с 04.05.2008
Offline
62
#6
DenisR:
RewriteEngine On
RewriteRule ([a-z0-9]*)/ $1.php

Таже ошибка

DR
На сайте с 18.08.2007
Offline
59
#7
RewriteRule ^(.*)/$ $1.php [L]
RewriteRule ^(.*)\.php$ /$1/ [R]

Во второй строке я поставил бы [R,L]

marshall123
На сайте с 04.05.2008
Offline
62
#8

DenisR,

Да так тоже пробовал , ошибка остается :(

DR
На сайте с 18.08.2007
Offline
59
#9

RewriteRule ^(.*)/$ $1.php [L] - это правило в данной компиляции срабатывает всегда, так как index2.php входит в множество '.*'. Поэтому я бы использовал '[0-9a-zA-Z_]*'.

В остальном, всё должно работать.

Чтобы отображались картинки и css разумнее всего в html коде везде поставить '/' в начале ссылок (тогда они не будут постоянно грузится с разных URL'ов). Т.е. заменить 'aa.jpg' на '/aa.jpg' итп

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий