[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: htaccess RewriteRule
yurij__
Давненько не приходилось создавать красивые урлы для сайта, а тут вдруг понадобилось.
Достал свои скромные разработки на этот счет (которые, кстати, когда-то без проблем работали) и удивился (наверное вы уже догадались чему)..
Конечно, нельзя сказать что не работает, нет, но проблема все равно стоит более чем остро. Вчера бился три часа, но результат по-прежнему отсутствует.

Код файла .htaccess

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z/]*)$ index.php?r=$2 [L]

регулярку сильно упростил для удобства восприятия, а собственно проблема вот в чем:

когда я делаю запрос в браузере
http://localhost/htaccess_test/param1/param2/param3/

( при этом index.php вместе с .htaccess лежат в http://localhost/htaccess_test/ )

то с массивом $_GET все в порядке, туда все заносится как надо, НО все css файлы почему-то упорно пытаются загрузиться из дериктории
http://localhost/htaccess_test/param1/param2/param3/

вместо положенной
http://localhost/htaccess_test/

Может ли кто-нибудь ответить мне почему так происходит, а еще лучше - как это можно исправить?



Спустя 2 часа, 53 минуты, 38 секунд (28.10.2010 - 13:27) inpost написал(а):
yurij__
Ты <base> ХТМЛ тега ввел?

Спустя 1 час, 42 минуты, 38 секунд (28.10.2010 - 15:10) aH6y написал(а):
yurij__
У меня тоже была такая проблемма. Решение довольно простое:

В переменную $www записываем путь до корневой папки сайта. В моём случае это выглядит так:

$www = 'http://'. $_SERVER['HTTP_HOST'] .'/wars/';

Это если Ваш сайт находиться по адресу: localhost/wars/
Затем просто вставляем $www перед файлом. И у нас идёт подключения начиная от корневой папки.
<link href="<?php echo $www;?>blocks.css" rel="stylesheet" type="text/css">
<
link href="<?php echo $www;?>style.css" rel="stylesheet" type="text/css">
<
script type="text/javascript" src="<?php echo $www;?>scripts.js"></script>

Спустя 23 минуты, 4 секунды (28.10.2010 - 15:33) Guest написал(а):
потому что адрес
/param1/param2/param3/style.css

не подходит под маску [a-zA-Z/]*

Спустя 3 минуты (28.10.2010 - 15:36) inpost написал(а):
aH6y
Тут ставишь <base> и ссылки на любые файлы относительно корневой страницы.

Спустя 20 минут, 46 секунд (28.10.2010 - 15:57) yurij__ написал(а):
да, действительно легче смотреть в сторону абсолютных адресов.

Но меня по прежнему мучает вопрос, почему же строки

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

не отсекают запросы к существующим файлам. Видать я не до конца разобрался с этой темой.

Спустя 1 час, 13 минут, 57 секунд (28.10.2010 - 17:11) aH6y написал(а):
inpost
Мой вариант аналогичен.
Что предпочтительнее использовать мой вариант иль тег base?

В моём варианте сервер сам прописывает путь.
В base нужно прописывать

Спустя 8 минут, 56 секунд (28.10.2010 - 17:20) inpost написал(а):
<base href="http://<?php echo $_SERVER['SERVER_NAME']; ?>"> - вот и всё, теперь всё это делается сервером. Мне нравится ссылки давать с корневого каталога, каждому своё

Спустя 1 час, 39 минут, 25 секунд (28.10.2010 - 18:59) aH6y написал(а):
inpost
Точно.

Спустя 1 день, 2 часа, 23 минуты, 58 секунд (29.10.2010 - 21:23) yurij__ написал(а):
Мне <base> тоже кажется удобней. Не требуется вписывать wwwpath каждый раз перед именем css, js или картинки. один раз указал в head и забыл. Хотя способ с wwwpath тоже достойный вариант, спасибо всем за советы.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.