Слэш в .htaccess

12
R
На сайте с 25.08.2012
Offline
16
885

Доброго времени суток, уважаемые форумчане.

Подскажите, пожалуйста, можно ли с помощью modrewrite преобразовать site.ru/dir/index.php?name=abc&page=5 в site.ru/dir/abc/page/5?

У меня не получается проставить слэши. Они воспринимаются как директории.

Максимум чего мне удалось добиться это site.ru/dir/abc-page-5 следующим образом:

RewriteRule ^dir/([a-zA-Z]+)-page-([0-9]+)$ dir/index.php?name=$1&page=$2 [L]

Пожалуйста, помогите!

C
На сайте с 04.02.2005
Offline
291
#1

RewriteRule ^dir/([a-zA-Z]+)/$ dir/index.php?name=$1 [L]

RewriteRule ^dir/([a-zA-Z]+)/page/([0-9]+$ dir/index.php?name=$1&page=$2 [L]

R
На сайте с 25.08.2012
Offline
16
#2
Chukcha:
RewriteRule ^dir/([a-zA-Z]+)/$ dir/index.php?name=$1 [L]
RewriteRule ^dir/([a-zA-Z]+)/page/([0-9]+$ dir/index.php?name=$1&page=$2 [L]

Не работает, я так уже пробовал. Браузер думает, что /abc/page/ это реальные папки и заходит в них... Или может быть я что-то не понимаю? Если не затруднит, поясните подробнее.

Да, кстати, у меня только RewriteEngine On в .htaccess еще прописан. Может в этом дело?

siv1987
На сайте с 02.04.2009
Offline
427
#3

RewriteEngine On не забудьте переде ними дописать

rubodon:
Браузер думает, что /abc/page/

паттерн для /dir/abc/page/

C
На сайте с 04.02.2005
Offline
291
#4

И правильно думает

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^dir/([a-zA-Z]+)/$ dir/index.php?name=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^dir/([a-zA-Z]+)/page/([0-9]+$ dir/index.php?name=$1&page=$2 [L]

R
На сайте с 25.08.2012
Offline
16
#5

Chukcha, спасибо. Я понял в чем была моя ошибка.

У меня еще один вопрос. Я правильно понимаю, что если я напишу dir/([^/]*) то это будет обозначать, что после dir/ могут идти абсолютно любые символы?

---------- Добавлено 23.10.2012 в 19:54 ----------

Прошу прощения, что вновь поднимаю тему, но все равно не получается добиться нужно результата.

Дело в том, что у меня лежат стили, картинки и другие подключаемые файлы в корневой папке. Файлы, которые лежат в site.ru/dir обращаются к корневой папке путем ../file_name.

И когда я пытаюсь перейти на site.ru/dir/abc/5, то url обрабатывается верно, но страница загружается без стилей, картинок и т.п.

Подскажите, пожалуйста, с чем это связано и как это исправить?

C
На сайте с 04.02.2005
Offline
291
#6

почувствуйте разницу

<link href="css/core.css" type="text/css" rel="stylesheet" />

и

<link href="/css/core.css" type="text/css" rel="stylesheet" />

R
На сайте с 25.08.2012
Offline
16
#7
Chukcha:
почувствуйте разницу

<link href="css/core.css" type="text/css" rel="stylesheet" />
и
<link href="/css/core.css" type="text/css" rel="stylesheet" />

Спасибо, что откликнулись. Под ../file_name я имел ввиду переход с site.ru/dir на site.ru. Поэтому я не совсем понял, как использовать ваш пример. Вы не могли бы мне объяснить, если вас не затруднит?

siv1987
На сайте с 02.04.2009
Offline
427
#8

Откройте файрбаг и посмотрите на вкладке сеть почему нормально не грузятся стили.

C
На сайте с 04.02.2005
Offline
291
#9

Есть понятие относительный и абсолютный путь

Ответьте себе, где и что?

<link href="css/core.css" type="text/css" rel="stylesheet" />

<link href="/css/core.css" type="text/css" rel="stylesheet" />

R
На сайте с 25.08.2012
Offline
16
#10

siv1987, если захожу на site.ru/dir/abc (site.ru/dir/index.php?name=abc), то страница загружается без картинок и стилей, т.к. путь к подключаемым файлам задан так: ../file_name. И если я в файербаге прописываю ../../filename, то все работает как надо. Но, ведь если не преобразовывать url, то все отображается корректно. Получается, что чтобы все работало как нужно, надо переделывать пути к файлам?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий