Pekkonen

Рейтинг
9
Регистрация
02.04.2015
jeanx:
Попробуйте этот вариант

Снова не работает.

Давайте я еще раз попробую объяснить как всё устроено, возможно это поможет решить проблему.

Сейчас внутри корня сайта находится свой файл .htaccess, а внутри директории dir - свой.

В него я и добавляю эти редиректы. Хотя пробовал пихать их и в основной, тоже безуспешно.

При этом редиректы на сервере работают, кое-какие предлагаемые примеры также работали, но совсем не так, как ожидается...

jkm:
Ну тогда применить аналогичный шаблон с RewriteRule

Опять не работает вообще.

Как будто нет такого правила в файле!

RewriteBase /dir/

RewriteRule ^dir/index.php(?:/(.*))?$ /dir/$1 [L,R=301]


---------- Добавлено 02.04.2015 в 20:38 ----------

jkm:
А ставите правила в .htaccess который в корне сайта или может в папке /dir/?

до этого ставил в тот, который внутри /dir/

только что попробовал вставить в корень сайта.

Одинаково не работает почему то..

jkm:
Шаблон ^/dir/index.php(?:/(.*))?$ совпадает с адресами
/dir/index.php
/dir/index.php/pathtopage.html

Но в таком виде

RedirectMatch 301 ^/dir/index.php(?:/(.*))?$ /dir/$1

это не работает вообще :(

ни для

/dir/index.php

ни для

/dir/index.php/pathtopage.html

Редирект не происходит вообще и адреса так и остаются без изменений.

DiKiJ:
У меня на хостинге сработало такое (пришлось самому домучивать):
Одна часть для index.php другая для /dir/index.php. Как сделать изящнее - не знаю :)

А это точно редиректит из адресов с index.php на такие же но без него?

Сейчас получаю

отсюда (и аналогичных ссылок)

www.sitename.com/dir/index.php/pathtopage.html

сюда всё идет www.sitename.com/index.php

И аналогично коду webjey:

Почему то пропускает без редиректа такой адрес

www.sitename.com/dir/index.php

---------- Добавлено 02.04.2015 в 19:20 ----------

jkm:
В старт-посте регулярки расчитаны на адреса с / после index.php

Извините в регулярке не силен :(

Этот Ваш код будет работать и со / и без него, т.е. неважно где будет стоять index.php в адресе?


RedirectMatch 301 ^/dir/index.php(?:/(.*))?$ /dir/$1


---------- Добавлено 02.04.2015 в 19:39 ----------

Еще такое пробовал, но также не работает :(
11. 301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

Пример: типа site.ru/index.php?n=1 на site.ru/?n=1

RewriteCond %{REQUEST_URI} /index.php

RewriteRule ^(.*)$ http://site.ru/ [R=301,L]

webjey, благодарю за ответ, но конкретно это тоже не работает.

У меня чуть выше указано уже

RewriteBase /dir/

А ваш код

RewriteRule ^(.*)index\.(html|php)$ http://%{HTTP_HOST}/$1 [R=301,L]

Почему то пропускает без редиректа такой адрес

www.sitename.com/dir/index.php

А правильные адреса вида

www.sitename.com/dir/pathtopage.html

наоборот редиректит все в корень - www.sitename.com

12
Всего: 15