Перейти к содержимому



Вопрос по .htaccess

#1 EugeneM
EugeneM
  • Неактивные
  • 20 сообщений
  • Репутация: 0
0

Обновлено 27 ноября 2009 - 16:37  Отправлено 26 ноября 2009 - 01:33

Извиняюсь, что не в тему... собственную тему создать нельзя, ибо надо вначале 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

#2 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 26 ноября 2009 - 12:24

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.
  • 0

#3 EugeneM
EugeneM
    Topic Starter
  • Неактивные
  • 20 сообщений
  • Репутация: 0

Отправлено 27 ноября 2009 - 02:17

ZiTosS
Благодаря

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

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

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

Возможно, Вы и правы. И экранирование слэша вовсе не обязательно.
Но вот ? после html мне нужен, т.к. хотелось бы, чтобы
/article/section/group/sample.html и
/article/section/group/sample.htm вели в одно и то же место. А без знака вопроса второй путь вроде бы как и не будет соответствовать правилу!
  • 0

#4 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 ноября 2009 - 16:37

EugeneM, А ну да, извиняюсь не подумал :blink:
Вот по поводу подобных регулярок:
RewriteRule ^article/...$ index.php?mode=article...
Я бы предпочёл
RewriteRule ^([A-Za-z]+)/...$ index.php?mode=$1...
А PHP-скрипт изначально получая $_GET['mode'] определяется с загружаемыми данными с помощью switch ... case. Подобная структура уменьшит количество реврайтов, да и удобнее как мне кажется. Не надо каждый раз править .htaccess, если вы, к примеру, добавили ещё какую-то ветвь исполнения
  • 0



Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
BLIK BLIK 1-й за Июль
Очков активности: 81 0 тем, 27 сообщений, 2 балла репутации
ТОП самых активных за этот месяц
  • Фотография heisenberg
    #1

    heisenberg
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Megoydagi
    #2

    Megoydagi (24ho.ru)
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Artos
    #3

    Artos
    Очков активности: 7.5 1 тема, 2 сообщения, 1 балл репутации

  • Фотография sws
    #4

    sws
    Очков активности: 6 0 тем, 4 сообщения, 1 балл репутации

  • Фотография Cpatoday
    #5

    Cpatoday
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография kartuzzz
    #6

    kartuzzz
    Очков активности: 6 1 тема, 1 сообщение, 1 балл репутации

  • Фотография Totti
    #7

    Totti
    Очков активности: 6 0 тем, 4 сообщения, 1 балл репутации

  • Фотография 2kwkw
    #8

    2kwkw
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Фотография Chaser
    #9

    Chaser (majento.ru)
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Фотография kuprum
    #10

    kuprum
    Очков активности: 4.5 1 тема, 0 сообщений, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru