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


Пользователь месяца
TimurR TimurR 1-й за Август
Очков активности: 726 3 темы, 35 сообщений, 11 баллов репутации
ТОП самых активных за этот месяц
  • Фотография ShowPrint
    #1

    ShowPrint (ShowPrint.ru)
    Очков активности: 207 2 темы, 17 сообщений, 6 баллов репутации

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

    Ixman (o5cat.ru)
    Очков активности: 105 0 тем, 10 сообщений, 7 баллов репутации

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

    WGN (worldgamenews.com)
    Очков активности: 75 Вне конкурса за определение пользователя месяца

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

    magnet (rbfxdirect.com)
    Очков активности: 67.5 Вне конкурса за определение пользователя месяца

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

    BLIK
    Очков активности: 33 Вне конкурса за определение пользователя месяца

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

    Developer
    Очков активности: 33 2 темы, 16 сообщений, 1 балл репутации

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

    AnnaYa (topbase.ru)
    Очков активности: 33 2 темы, 5 сообщений, 2 балла репутации

  • Фотография Алексей111
    #8

    Алексей111
    Очков активности: 28.5 5 тем, 4 сообщения, 1 балл репутации

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

    TimurR
    Очков активности: 27 Вне конкурса за определение пользователя месяца

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

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

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

Kwork.ru - услуги фрилансеров от 500 руб.

Поддержите форум! =)
Апдейты
  • Яндекс тИЦ: 19.11.2017
  • Яндекс выдача: 24.09.2018
Топ 5 участников по репутации


Вопрос по .htaccess

#1 EugeneM

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

Отправлено 26 November 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
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 26 November 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 November 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
  • Неактивные
  • 5148 сообщений
  • Репутация: 8

Отправлено 27 November 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



Похожие темы

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

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