Проблема Как сделать редирект с index.php на html сайте со страницами в папках.

Тема в разделе "Общие вопросы оптимизации", создана пользователем Marketologov, 27 май 2013.

Статус темы:
Закрыта.
  1. Marketologov

    Marketologov На форуме с: 6 фев 2011 Сообщения: 2.068

    Вот ломаю голову как можно было бы оптимизировать такой сайт.

    Допустим есть адрес http://site.ru/company/index.php
    Таком образом /company/ - это раздел, но также это папка, в которой есть файл index.php.
    Страница также доступна по адресу http://site.ru/company/.

    Так вот хотелось бы привести страницы к единому адресу, а именно ЧПУ.
    Естественно оптимальным было бы сделать редиректы с http://site.ru/company/index.php на http://site.ru/company/.

    Редирект ниже перенаправляет только главную:
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://ваш_сайт/ [R=301,L]

    Нашел способ для внутренних страниц, где есть index.php на конце:
    RewriteRule (.*)\index.php$ http://site.ru/$1 [R=301,L]

    Но в таком, случае сайт перестает работать, и браузер пишет что сайт недоступен из-за множественного редиректа.

    Кто нибудь сталкивался с таким?
    Есть ли возможность реализовать рабочий редирект с http://site.ru/company/index.php на http://site.ru/company/?
    --- добавлено: 27 май 2013 в 12:59 ---
    короче проблема исчерпана, проблема в сервере.

    пробовал на локальном все рабоает
  2. Chudenkov

    Chudenkov На форуме с: 12 ноя 2010 Сообщения: 1.915

    Через JS можешь отправить отправить браузеру 301 ответ.
  3. melihovgv

    melihovgv На форуме с: 25 июл 2011 Сообщения: 1.507

    Код:
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
    RewriteRule ^index\.php$ http://%{HTTP_HOST}/ [R=301,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php [L]
    
    Вот тут есть, главное еще в нужное место вставить)
  4. Marketologov

    Marketologov На форуме с: 6 фев 2011 Сообщения: 2.068

    это нужно к каждой странице прописывать?)

    Не работает.
    Там проблема в сервере какаято. Мне кажется у них сервер возвращает сам на index.php .. из за этого зацикливание.
  5. Chudenkov

    Chudenkov На форуме с: 12 ноя 2010 Сообщения: 1.915

    Marketologov, ага. Копни в сторону dhtml и подключаемых html.
    Marketologov нравится это.
  6. oldzas

    oldzas На форуме с: 18 фев 2013 Сообщения: 214

    Изначально сайт имеет правильную структуру и править ничего в принципе не надо, любые правки - только во вред.
  7. Marketologov

    Marketologov На форуме с: 6 фев 2011 Сообщения: 2.068

  8. oldzas

    oldzas На форуме с: 18 фев 2013 Сообщения: 214

    Правильная структура: http://site.ru/company/

    Когда программист пишет сайт он везде ставит линки типа http://site.ru/company/ и никогда не пишет на конце index.php но, и программист и поисковая система в курсе что в каталоге находится индексный файл который откроется по умолчанию.

    Жесткой ошибки тут нет, это больше похоже на ковыряние палочкой в анусе.
    --- добавлено: 28 май 2013 в 11:49 ---
    Уже отправил сообщение, если вы не прекратите издеваться над сайтом, то это чревато такой ситуацией:

    Приходит новый битрикс программист (думаю что ваши сайты именно на нем) и начинает править в админке правила, а там такие фишки. Есть очень большая вероятность что они неправильно обработаются, потом они при редактировании-записи пишутся в файл urlrewrite.php сортируясь по длинне правила (думаю вы этого не знали) и в следующий раз то же вылазиет неприятная портянка, в итоге она в один прекрасный день засбоит и сотрется весь файл. Честно для программиста это геморрой. Так же, когда они отсортируются по длине правила, у программиста ожидается неправильное наложение правил чпу. Реальный пример: статик страница например символов в 20-30, а правило для детальной страницы в новости короткое + если его еще сделали например не через чпу, а ИД и в итоге все сломоается нафиг .....
  9. Marketologov

    Marketologov На форуме с: 6 фев 2011 Сообщения: 2.068

    oldzas, наверно меня не поняли)

    там сайт на html, без движка

    и ссылки на сайте там изначально стоят как раз с index.php - страницы папок сайта
    хотя доступны и по другим урлам

    PS У Битрикса с этим проблем нет)
  10. oldzas

    oldzas На форуме с: 18 фев 2013 Сообщения: 214

    --- добавлено: 28 май 2013 в 12:18 ---
    Если это голый штмл, может программист пройдет рекурсивно по всем папкам и тупо заменит /index.php на одинарный слеш ?
    Marketologov нравится это.
  11. Marketologov

    Marketologov На форуме с: 6 фев 2011 Сообщения: 2.068

    По моему это физически нельзя реализовать... т.к. например страница в папке /company/ есть index.php - она как раз и есть:
    http://site.ru/company/index.php
    http://site.ru/company/
    http://site.ru/company

    При этом там есть еще страницы в папке, например o-nas.php
    таким образом есть такой урл http://site.ru/company/o-nas.php
    А за саму папку как раз index.php отвечает.

    Вот насчет этого может и стоит капнуть
Статус темы:
Закрыта.