Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Fobio
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 9
1

mod_rewrite: все на index.php без www и index.php

13.02.2013, 20:14. Просмотров 2748. Ответов 7
Метки нет (Все метки)

Приветствую, уважаемые форумчане!
Подскажите, пожалуйста, как мне реализовать следующую схему в .htaccess, используя mod_rewrite.
Я хочу все запросы перенаправлять на site.loc/index.php, при этом www.site.loc/index.php должен редиректить на site.loc/.
Как это все сделать по отдельности нашел, но как связать воедино - не знаю.
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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]
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 20:14
Ответы с готовыми решениями:

Mod_rewrite, Как изменить вид ссылки типа index.php?cat=php
ссылка получается вот такая: ...

переадресация на index.php средствами mod_rewrite
Hi, All! задача: пропускать все запросы через index.php кроме некоторых...

Вывод ссылок вместо "index.php?page=2" так - "index-page2.html"
Можно ли сделать вывод ссылок вместо "index.php?page=2" таким образом -...

Редирект с /index.php/... на /...
Помогите поменять адрес: "http://mysite.ru/index.php/welcome" на...

Apache не загружает index.php
Загружает только index.html если убрать и его то появляется сообщение index of...

7
Илья Федин
Бог живет в /root
884 / 350 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
14.02.2013, 00:25 2
У вас и так всё связано
0
Fobio
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 9
14.02.2013, 01:20  [ТС] 3
Илья Федин, спасибо за ответ!

Привел код к следующему виду:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
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]
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
Теперь все работает как мне требовалось.
0
Fobio
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 9
18.02.2013, 18:03  [ТС] 4
Друзья, назрел еще один вопрос с этим же .htaccess.
Подскажите, пожалуйста, как мне убрать завершающий слеш, если он есть, из адресной строки?
Текущий .htaccess:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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]
0
Илья Федин
Бог живет в /root
884 / 350 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
18.02.2013, 20:23 5
Fobio,
Код
RewriteRule ^(.*)\/$ $1 [R=301]
Если не работает, сделайте так:
Код
RewriteRule ^(.*)\/$ http://site.ru/$1 [R=301]
Вместо site.ru естественно адрес вашего сайта, прошу отписаться каким вариантом воспользовались

Добавлено через 3 минуты
Цитата Сообщение от Fobio Посмотреть сообщение
Код
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
Правильней будет:
Код
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
0
Fobio
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 9
18.02.2013, 20:57  [ТС] 6
Илья Федин, спасибо за помощь!
Привел код к следующему виду:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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]
#remove last slash
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.*)$ %1 [R=301,L]
#remove more than one slash
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%3 [R=301,L]
#all queries on index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . / [L]
Добавлено через 9 минут
7 пункт тоже исправил
0
Илья Федин
Бог живет в /root
884 / 350 / 1
Регистрация: 12.08.2012
Сообщений: 4,401
Записей в блоге: 5
18.02.2013, 20:59 7
Цитата Сообщение от Fobio Посмотреть сообщение
%1/%3
Быть может %1/%2 ?
Вообще ваш код немножко запутанный

Добавлено через 43 секунды
Цитата Сообщение от Fobio Посмотреть сообщение
спасибо за помощь!
Пожалуйста
1
Fobio
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 9
18.02.2013, 21:11  [ТС] 8
Илья Федин, согласен, %1/%2. Думал, получится сносить повторные слеши одним разом и выделял их в группу. Не получилось, а поменять обратно забыл.
Спасибо!
0
18.02.2013, 21:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2013, 21:11

index.php (индексные файлы)
На сервере стоит wordpress 4.3.1. В настройках apache 2.2.22 не было выставлено...

Нет файла index.php
Здравствуйте! Надеюсь в правильную ветку пишу... Прошу помощи. Делали...

index.php вместо 404
Помогите новичку, подобной темы не нашел. Как сделать:когда пользователь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru