Форум → Разработка → Установка и администрирование ПО → Вебсервер → mod_rewrite
mod_rewrite
Страницы: ← Следующая страница →
-
Не совсем понимаю как он работает. Пишу правило в .htaccess.
Options FollowSymLinks
RewriteEngine On
RewriteBase /content/
RewriteCond %{REQUEST_URI} /content/header/[^/]+/?$
RewriteRule ^header/([^/]+)/?$ index.php?header=$1
Передаю в URL нечто такое: http://somethin/content/head/privet
Индекс файл печатает privet.
Т.е. все нормально работает.
Мне не понятно почему в логе это (см. аттач)
Как то это нездорово столько действий делать…
Почему когда идет редирект снова паттерн применяется. И что еще за subreq (подзапрос, откуда он берется?) -
-
2 февраля 2009 г. 2:06, спустя 47 минут 31 секунду
попробуй использовать модификаторы
[L], [R], [QSA] и др. -
2 февраля 2009 г. 7:48, спустя 5 часов 42 минуты 2 секунды
Да уже пробовал.
[L] с этой точки зрения вообще ничего не дает.
Как написано тут http://httpd.apache.org/docs/2.2/rewrite/rewrite_tech.html он вообще вначале применяет паттерн, а затем использует RewriteCond.
Единственный модификатор, который помогает - [NS]. Subrequest проходят без преобразований
Только не понятно откуда вообще этот Subrequest берется. -
2 февраля 2009 г. 7:56, спустя 8 минут 6 секунд
Batler, вот тебе не похуй зачем столько действий?))Сапожник без сапог -
2 февраля 2009 г. 8:12, спустя 15 минут 32 секунды
Сам охуел но не похуй =)
Нашел одну вещь. Если не использовать RewriteBase то код сокращается =)
Даю 2 лога с Baseом и без.
Для rew1.txt код .htaccessOptions FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} /content/header/[^/]+/?$
RewriteRule ^header/([^/]+)/?$ /content/index.php?header=$1 [L]
Для rew2.txt код .htaccessOptions FollowSymLinks
RewriteEngine On
RewriteBase /content/
RewriteCond %{REQUEST_URI} /content/header/[^/]+/?$
RewriteRule ^header/([^/]+)/?$ index.php?header=$1 [L]
Меньше всего действий (rew3.txt)Options FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} /content/header/[^/]+/?$
RewriteRule ^header/([^/]+)/?$ /content/index.php?header=$1 [L,NS] -
2 февраля 2009 г. 11:15, спустя 3 часа 2 минуты 59 секунд
Да и еще по теме. Апач (mod_rewrite) случайно не изменяет кодировку строки?
Пытаюсь передать русские символы. Если без реврайта - то нормально приходят.
Если реврайт был, то белиберда какая - то… -
2 февраля 2009 г. 11:18, спустя 2 минуты 53 секунды
Да и еще по теме. Апач (mod_rewrite) случайно не изменяет кодировку строки?
Пытаюсь передать русские символы. Если без реврайта - то нормально приходят.
Если реврайт был, то белиберда какая - то…
ты получаешь символы в кодировке веб-сервера в urlencode формате. Возможно что придется через iconv в самом скрипте пропускать, если например веб-сервер дает в 1251, а скрипт в утф8. -
2 февраля 2009 г. 11:23, спустя 5 минут 20 секунд
Batler, открой для себя nginx)) там тоже байт оптимизацией разраб занимается))Сапожник без сапог -
2 февраля 2009 г. 12:15, спустя 52 минуты 4 секунды
Для меня это было оптимизацией ради оптимизации =) -
2 февраля 2009 г. 12:28, спустя 12 минут 16 секунд
ты получаешь символы в кодировке веб-сервера в urlencode формате. Возможно что придется через iconv в самом скрипте пропускать, если например веб-сервер дает в 1251, а скрипт в утф8.
Вот блин пропускаю и нийуха нет =(
Смотрим:
Я создаю строку чтобы подставить ее потом в браузер (для чистоты эксперимента создаю ее на php а затем копирую в адресную строку броузера)
echo rawurlencode(iconv('cp1251', 'UTF-8','Привет как дела'));
Создалась строка: %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BA%D0%B0%D0%BA%20%D0%B4%D0%B5%D0%BB%D0%B0
Ессно если ее подставить в Operу или FF она преобразуется в вид Привет%20как%20дела (они utf-8 передают)
пишу URL http://somehost/content/Привет%20как%20дела/
последняя строка Привет%20как%20дела через mod_rewrite передается в скрипт через url (GET переменная header)
echo $_GET['header'] = iconv('UTF-8', 'cp1251', $_GET['header']);
Вывод скрипта:
Notice: iconv() [function.iconv]: Detected an illegal character in input string in Z:\home\localhost\www\content\index.php on line 3
??N??????
Где то Апач косячит кодировку, только вот не пойму где… -
-
2 февраля 2009 г. 13:51, спустя 44 минуты 15 секунд
методом тыка :)
Как узнать кодировку, в которой отдает сервер?Сапожник без сапог -
-
Страницы: ← Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!