X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Вопрос по .htaccess
Eugene_hb
Eugene_hb
Topic Starter сообщение 26.11.2009, 2:33; Ответить: Eugene_hb
Сообщение #1


Извиняюсь, что не в тему... собственную тему создать нельзя, ибо надо вначале 10 сообщений отправить... а вот флудить и писать всякую чепуху не хочется.

Вопрос такой.
В .htaccess описаны правила:
RewriteEngine On
RewriteBase /f1/
RewriteRule ^article\/([_A-Za-z0-9]+)\/([_A-Za-z0-9]+)\/([_A-Za-z0-9]+).html?$ index.php?mode=article&section=$1&group=$2&article=$3
RewriteRule ^article\/([_A-Za-z0-9]+)\/([_A-Za-z0-9]+)\/?$ index.php?mode=article&section=$1&group=$2
RewriteRule ^article\/([_A-Za-z0-9]+)\/?$ index.php?mode=article&section=$1

Если при этом еще и в заголовке страницы указать base href, то почти всё работает как надо. За исключением почему-то ссылок вида <a href="#1"> (использую их, в частности, в Coda Slider), которые преобразуются почему-то в %20%3E%3Cmeta%20http-equiv=#1...
Если base href убрать, то эти ссылки остаются такими как есть (#1), но все css, картинки...
Прописывать /img/sample.png вместо img/sample.png тоже не выход - оно должно одинаково работать и с, например, 10.xxx.xxx.xxx/mysite и mysite.host.ru (т.е. путь от корня может быть разным).
Можно, конечно, с помощью php во все страницы подставлять абсолютный путь до всех файлов (т.е. использовать конструкции вида $sitebase."/img/sample.png"), но тогда и css нужно будет через php формировать.... через одно место, мягко говоря, получится... Есть может какое-то более правильное решение?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 26.11.2009, 13:24; Ответить: ZiTosS
Сообщение #2


EugeneM,
Можно, конечно, с помощью php во все страницы подставлять абсолютный путь до всех файлов (т.е. использовать конструкции вида $sitebase."/img/sample.png"), но тогда и css нужно будет через php формировать.... через одно место, мягко говоря, получится... Есть может какое-то более правильное решение?

Вы не правы насчёт CSS. Абсолютный путь вам придётся использовать только в подключаемых файлах + пути картинок. CSS тут никоим образом не затрагивается. Всегда все файлы задаются относительно его расположения, а не относительно страницы, куда этот файл вставляется.

Почему ссылки преобразуются честно сказать не могу. Вроде как через сервер страница проходить не должна. Попробовал подобную структуру у себя, всё работает.
Вообще у вас дурацкие регулярные выражения. ? - означает 0 или 1 попаданий, / - не надо экранировать
RewriteRule ^article/([_A-Za-z0-9]+)/([_A-Za-z0-9]+)/([_A-Za-z0-9]+).html$ index.php?mode=article&section=$1&group=$2&article=$3
RewriteRule ^article/([_A-Za-z0-9]+)/([_A-Za-z0-9]+)/?$ index.php?mode=article&section=$1&group=$2
RewriteRule ^article/([_A-Za-z0-9]+)/?$ index.php?mode=article&section=$1


И зачем вы вообще используете RewriteBase /f1/? Вы хотите чтобы вместо отброшенного при преобразовании локального пути до каталога, вам возвращалось содержимое из:
/f1/index.php....

У меня все якоря работают даже с base.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Eugene_hb
Eugene_hb
Topic Starter сообщение 27.11.2009, 3:17; Ответить: Eugene_hb
Сообщение #3


ZiTosS
Благодаря
У меня все якоря работают даже с base.

стал искать причину. Нашел. Тупейшая ошибка - забыл закрывающую кавычку в base. Т.е. у меня было <base href="http://localhost/mysite/>. зря панику поднял, в общем :blink:

Вообще у вас дурацкие регулярные выражения

Возможно, Вы и правы. И экранирование слэша вовсе не обязательно.
Но вот ? после html мне нужен, т.к. хотелось бы, чтобы
/article/section/group/sample.html и
/article/section/group/sample.htm вели в одно и то же место. А без знака вопроса второй путь вроде бы как и не будет соответствовать правилу!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 27.11.2009, 17:37; Ответить: ZiTosS
Сообщение #4


EugeneM, А ну да, извиняюсь не подумал :blink:
Вот по поводу подобных регулярок:
RewriteRule ^article/...$ index.php?mode=article...

Я бы предпочёл
RewriteRule ^([A-Za-z]+)/...$ index.php?mode=$1...

А PHP-скрипт изначально получая $_GET['mode'] определяется с загружаемыми данными с помощью switch ... case. Подобная структура уменьшит количество реврайтов, да и удобнее как мне кажется. Не надо каждый раз править .htaccess, если вы, к примеру, добавили ещё какую-то ветвь исполнения

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Вопрос - платное размещение баннеров на сайте
10 WGN 3126 14.12.2020, 14:20
автор: Peterson
Открытая тема (нет новых ответов) Вопрос по рекламе в "инстаграме"
Только активные аккаунты могут создавать или редактировать рекламу
8 Zubkov 16020 17.1.2020, 17:49
автор: Forumacc
Открытая тема (нет новых ответов) Как перенести правила переадресации из .htaccess в php обработчик nginx?
0 KrisGuseva 2084 28.12.2019, 7:33
автор: KrisGuseva
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВопрос-ответ о работе форума
307 dos1k 43056 9.11.2019, 17:59
автор: heks
Открытая тема (нет новых ответов) Жена логопед, собрался ей приводить клиентов. Встал вопрос, куда приводить.
В теме перечисление доступного мне продвижения, но с чего начать?
9 memeplex 3689 16.2.2019, 15:45
автор: zyzy


 



RSS Текстовая версия Сейчас: 28.3.2024, 22:01
Дизайн