С Новым годом! Форум программистов, компьютерный форум, киберфорум
Apache, htaccess
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
1

Не срабатывает переадресация при запросе к папке

07.09.2018, 10:50. Показов 746. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть у меня сайт, у которого в отдельной папке живет форум. сам сайт живет в папке, которая у апача является DocumentRoot (/var/www/html). А форум живет в папке /var/www/forum. Чтобы апач показывал форум, в его настройки был добавлен файл forum.conf с таким содержимым:
Код
Alias /forum /var/www/forum
<Directory /var/www/forum>
    Allow from All
</Directory>
подключил я к сайту ssl-сертификат и в .htaccess прописал переадрессацию с http на https. Итоговый .htaccess выглядит так (комментарии убрал, пару строк разъяснений добавил):
Код
<IfModule mod_rewrite.c>
	RewriteEngine on

# это мои три добавленные строки - переадресация с на и запросов приехавших не на мое доменное имя:
	RewriteCond %{HTTP_HOST} !^wifi-hotspot\.zp\.ua [OR]
	RewriteCond %{HTTPS} !on
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]

# это стандартные строки, вписанные в файл разработчиками phpbb 
	RewriteBase /forum/
	RewriteCond %{REQUEST_FILENAME} !-f
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule (.*) app.php [QSA,L]

</IfModule>
И теперь про то, что мне не удается. Если обращаться к форуму с указанием в адресной строке чего-либо после /forum/, например, http://имя_домена/forum/index.php, то все срабатывает как надо - происходит пересылка на тот адрес, который и нужно (https://имя_домена/forum/index.php). Но если обратиться к самой папке /forum/ (вот так: http://имя_домена/forum/), то переадресация происходит непосредственно на сам сайт - http://имя_домена/

Что я сделал не так?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2018, 10:50
Ответы с готовыми решениями:

Переадресация при get запросе из неправильного в правильный
Есть запрос типа: http://Bobr.site.ru/?page=want2Bobr&amp;code=SecretKey?nickname=Generaliv Нужен...

Переадресация на URL при POST запросе
using System; using System.Collections.Generic; using System.Text; using...

При любом поисковом запросе происходит переадресация на go.mail.ru + большое количество рекламы в браузере
Здравствуйте! Как написано в теме, при любом поиске происходит переадресация на сайт go.mail.ru ....

Не срабатывает переадресация
При открытии сайта без авторизации должна открываться страница авторизации. А в итоге не...

11
364 / 306 / 73
Регистрация: 15.09.2017
Сообщений: 1,405
07.09.2018, 11:42 2
Ваш алиас при запросе не распознается, как полноценный каталог. Перенесите форум в /var/www/html/forum, раз уж используете внедренный в сайт независимый форум.
1
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
07.09.2018, 12:02  [ТС] 3
переделал. без разницы
0
364 / 306 / 73
Регистрация: 15.09.2017
Сообщений: 1,405
07.09.2018, 12:25 4
Попробуйте убрать условие RewriteCond %{REQUEST_FILENAME} !-d или переименовать файл точки входа в index.php.
1
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
07.09.2018, 12:50  [ТС] 5
Цитата Сообщение от Phantom-84 Посмотреть сообщение
убрать условие
попробовал, все равно пересылает на /
Цитата Сообщение от Phantom-84 Посмотреть сообщение
переименовать файл точки входа в index.php
честно говоря, опасаюсь, это ведь один единственный файлик от всей огромной кучи файлов phpbb, возможно, там все как-то завязано и с другими...

зы. уточнение
если я обращаюсь к форуму по адресу https://имя_домена/forum/ (то есть по шифрованному протоколу), то открывается именно форум, а не / (сам сайт). то есть, при таком обращении не работает, как я понимаю, мой "первый" блок правил, вот этот:
Код
	RewriteCond %{HTTP_HOST} !^wifi-hotspot\.zp\.ua [OR]
	RewriteCond %{HTTPS} !on
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301]
я пробовал в нем в правиле (RewriteRule) добавлять L, чтобы в конце стало [R=301,L] (как я почитал, ключ L означает, что дальнейшая обработка запроса прерывается после этого редиректа). И как я понял, при таком варианте ([R=301,L]) вся последующая часть правил не работает. Но и при таком варианте когда я запрашиваю http://имя_домена/forum/, все равно прилетаю на /... И как мне кажется, проблема не в правилах от разработчиков phpbb, а именно в моих
0
364 / 306 / 73
Регистрация: 15.09.2017
Сообщений: 1,405
07.09.2018, 13:06 6
В показанном фрагменте смущает вот это:
Код
RewriteCond %{HTTP_HOST} !^wifi-hotspot\.zp\.ua [OR]
Код
https://%{HTTP_HOST}
Это обычно делается для изменения имени хоста, чего у вас не происходит. Лучше напишите в правиле имя хоста явно.

Добавлено через 8 минут
Цитата Сообщение от Dmitry Посмотреть сообщение
честно говоря, опасаюсь, это ведь один единственный файлик от всей огромной кучи файлов phpbb, возможно, там все как-то завязано и с другими...
Обычно файл точки входа можно переименовывать без проблем (я же не советую вам переименовывать другие файлы). Если, конечно, у вас не используется имя файла app.php в адресах. Вообще странное название. Обычно для файла единой или главной точки входа по умолчанию используется имя index.php. Поинтересуйтесь, app.php - это оригинальное или уже кем-то измененное имя применительно к phpbb.
1
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
07.09.2018, 13:11  [ТС] 7
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Лучше напишите в правиле имя хоста явно.
это да, я согласен, что нужно указать свое имя домена. когда создавал эту тему, выбрал одно из нескольких вариантов правила. реально их там по очереди пробовались три разных:
Код
#	RewriteRule ^(forum/.*)$ https://wifi-hotspot.zp.ua/$1 [R=301,L]
#	RewriteRule ^(.*)$ https://wifi-hotspot.zp.ua/forum/$1 [R,L]
	RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
также, при тестах правило про "чужое" имя хоста мною отключалось совсем (коментировалось), но все также безрезультатно...

Добавлено через 4 минуты
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Обычно файл точки входа можно переименовывать без проблем (я же не советую вам переименовывать другие файлы). Если, конечно, у вас не используется имя файла app.php в адресах. Вообще странное название. Обычно для файла единой или главной точки входа по умолчанию используется имя index.php. Поинтересуйтесь, app.php - это оригинальное или уже кем-то измененное имя применительно к phpbb.
это файл (app.php) - именно от разработчиков phpbb. я его не переименовывал, не создавал, не редактировал. кроме того - в папке с форумом имеется также и файл index.php (тоже, "родной", от разработчиков). правила переадресации на app.php, присутствующие в .htaccess - ихние, "родные", как идут в архиве с инсталятором phpbb...
0
364 / 306 / 73
Регистрация: 15.09.2017
Сообщений: 1,405
07.09.2018, 13:30 8
Тогда в любом случае вы не смогли бы переименовать без конфликтов. С двумя точками входа уже сложнее (если, конечно, одна из них них не является какой-либо заглушкой для другой) - нужно знать их назначение.

Добавлено через 4 минуты
Вероятно, при наличии условия RewriteCond %{REQUEST_FILENAME} !-d запрос по адресу /forum/ будет уходить в index.php, в котором и скрывается источник описанного вами незапланированного перенаправления.

Добавлено через 6 минут
Цитата Сообщение от Dmitry Посмотреть сообщение
попробовал, все равно пересылает на /
Возможно, это единообразный функционал обеих точек входа. Может, в настройках самого форума нужно тоже где-то указать базу /forum/, а пока вы этого не сделаете, будет происходить перенаправление на предполагаемую по умолчанию базу /.
1
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
07.09.2018, 14:07  [ТС] 9
вкинул в папку с форумом "родной" htaccess, в том виде как его в архив с инсталятором кладут сами разработчики phpbb.
на форуме установлен sitemap.xml (то ли плагин, то ли расширение - не помню, да и не важно, имхо, за исключением того, что ему для работы нужен реврайт). попытался обратиться к нему - получил "облом" (не найдено). в файле изменил "базу" на /forum/. сайтмап отработал как надо.

далее...
"своих правил" про https я еще в htaccess не добавлял, и решил в таком состоянии попробовать обратиться на адрес http://мой_домен/forum/. Результат плачевный - я снова прилетел в / (при чем на https). возникло предположение, что раз в htaccess форума правил переадресации еще нет, может срабатывают те, что живут в htaccess непосредственно в корне сайта?

Добавлено через 5 минут
дальше больше...
не добавляя никаких вообще правил про https в htaccess форума попробовал обращаться с параметрами в адресной строке, идущими после /forum/, например, http://мой_домен/forum/search.... ive_topics (т.е., по http). В итоге идет переадресация на адрес https://мой_домен/forum/search... ive_topics - на https!!! сижу, офигеваю..
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.09.2018, 14:24 10
Цитата Сообщение от Dmitry Посмотреть сообщение
не добавляя никаких вообще правил про https в htaccess форума попробовал обращаться с параметрами в адресной строке, идущими после /forum/
В настройках хостинга нет никакой переадресации? И это тоже возможно:
Цитата Сообщение от Dmitry Посмотреть сообщение
может срабатывают те, что живут в htaccess непосредственно в корне сайта?
если они там есть, то срабатывают.
0
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
07.09.2018, 14:29  [ТС] 11
Цитата Сообщение от Para bellum Посмотреть сообщение
В настройках хостинга нет никакой переадресации?
не, это vps с установленным (мной) по дефолту apache
Цитата Сообщение от Para bellum Посмотреть сообщение
если они там есть, то срабатывают.
есть...
ясно. буду с ними колдовать...
0
Эксперт по компьютерным сетямЭксперт NIX
13357 / 7489 / 820
Регистрация: 09.09.2009
Сообщений: 29,284
09.09.2018, 21:02  [ТС] 12
Цитата Сообщение от Dmitry Посмотреть сообщение
буду с ними колдовать...
помогло добавление вот таких условия и правила в htaccess в корне сайта:
Код
	RewriteCond %{REQUEST_URI} ^forum
	RewriteRule ^ - [L,QSA]
имхо, важно, эти две строки были добавлены ПЕРВЫМИ в наборе правил переадрессации.
в итоге htaccess, размещенный в корне сайта, прекратил обработку этих запросов, и всю переадресацию выполняет htaccess, размещенный в папке forum ...
0
09.09.2018, 21:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2018, 21:02
Помогаю со студенческими работами здесь

Переадресация для гостевого посетиля на произвольную http страницу. Не срабатывает
Хтассес реврайт не предлагать, не пашет с SLogin if ($this-&gt;user-&gt;get('guest')):...

Не срабатывает свойство в медиа запросе
Есть медиа запрос @media only screen and (max-width : 992px) .button font-size: 18px...

Почему Python-скрипт в одной папке срабатывает, а в другой нет?
Есть скрипт для Blender, по пути C:\\skeletonClassic.blend срабатывает, а там где все...

Переадресация на non .php, когда имя файла php аналогично папке
На сайте есть папка site.com/dir и есть файл site.com/dir.php При переадресации выдает ошибку...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru