Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mod_rewrite: все на index.php без www и index.php, apache, mod_rewrite 
:(
    Опции темы
Fobio
Дата 13.2.2013, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2013

Репутация: нет
Всего: нет



Приветствую, уважаемые форумчане! smile
Подскажите, пожалуйста, как мне реализовать следующую схему в .htaccess, используя mod_rewrite.
Я хочу все запросы перенаправлять на site.loc/index.php, при этом www.site.loc/index.php должен редиректить на site.loc/.
Как это все сделать по отдельности нашел, но как связать воедино - не знаю.
Код

RewriteEngine On
RewriteBase /
# remove www from host
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
#removing index.php
RewriteCond %{REQUEST_URI} ^(.*)index\.php$
RewriteRule ^ %1 [R=301,L]
#exit if redirect
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

PM MAIL   Вверх
Arantir
Дата 13.2.2013, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Буковка L в квадратных скобочках после правила означает, что если выполнится это правило, то на нем rewrit'инг останавливается.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Fobio
Дата 13.2.2013, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2013

Репутация: нет
Всего: нет



Arantir, насколько я слышал, текущая итерация останавливается. И процесс повторяется до тех пор, пока строка запроса не перестанет меняться.
Вы мне подскажите, где что поменять, чтобы все заработало. smile
PM MAIL   Вверх
Arantir
Дата 13.2.2013, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Цитата(Fobio @  13.2.2013,  18:20 Найти цитируемый пост)
насколько я слышал, текущая итерация останавливается. И процесс повторяется до тех пор, пока строка запроса не перестанет меняться.

Если бы это было так, то не существовало бы такой проблемы, когда браузер выдает "Этот запрос перенаправляется таким образом, что он никогда не завершится"...

Если не верится, то сравните результат выполнения этих двух примеров:
Код
    RewriteCond %{REQUEST_URI} .*
RewriteRule ^(.*)$ index.php [L]
RewriteCond %{REQUEST_URI} .*
RewriteRule ^(.*)$ blablabla
Код
    RewriteCond %{REQUEST_URI} .*
RewriteRule ^(.*)$ index.php
RewriteCond %{REQUEST_URI} .*
RewriteRule ^(.*)$ blablabla



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
Fobio
Дата 13.2.2013, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2013

Репутация: нет
Всего: нет



Arantir, очень странно. По моему мнению, второй вариант должен был вызывать вечный цикл и указанную вами ошибку. А он просто ведет на blablabla. Хотя в моем коде происходило что-то странное.

В общем, я решил свою проблему, изменив последнее правило на
Код

RewriteRule . / [L]


Всем спасибо за помощь! smile

PM MAIL   Вверх
Fobio
Дата 18.2.2013, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 2.2.2013

Репутация: нет
Всего: нет



Друзья, назрел еще один вопрос с этим же .htaccess. smile
Подскажите, пожалуйста, как мне убрать завершающий слеш, если он есть, из адресной строки?
Текущий .htaccess:
Код

Options +FollowSymLinks

RewriteEngine On
RewriteBase /
#remove www from host
RewriteCond %{HTTP_HOST} ^www\.(.+)$
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
#remove index.php
RewriteCond %{REQUEST_URI} ^(.*)index\.php$
RewriteRule ^(.*)$ %1 [R=301,L]
#all queries on index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование Web серверов и Web служб | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.