Помогите с mod_rewrite

Николай В.
На сайте с 07.09.2006
Offline
62
563

Что-то не могу сообразить :no:, а задача в сущности простая:

/ → /page.php

/my-alias/ → /page.php?alias=my-alias

/my-alias/1/ → /page.php?alias=my-alias&id=1

Все остальное → 404 ошибка

Да, надо учитывать наличие/отсутствие слэшей на концах, alias состоит из [0-9a-zA-Z_\-], id соответственно число.

ixRock
На сайте с 14.11.2006
Offline
46
#1

что то вроде этого должно помочь...

RewriteEngine On

RewriteRule ^([0-9A-Za-z_-]+)/([0-9]+)/$ /index.php?alias=$1&id=$2 [L]

Работаю [S]за еду и секас[/S] с XHTML, CSS, XSLT, JS, PHP. Если что, вот тут (http://www.mintdesign.ru/) некоторые мои работы. Контакты: ася 344-ноль86-276, мыло ixrock@gmail.com
Николай В.
На сайте с 07.09.2006
Offline
62
#2

ixRock, ваш пример учитывает только третью строку условия задачи, а меня больше интересует как перенаправить запрос к корню на page.php и финт с 404-ой ошибкой.

Shtogrin
На сайте с 02.11.2006
Offline
95
#3

RewriteRule     ^([0-9A-Za-z_\-]+)$             /$1/ [R=301,L]
RewriteRule ^([0-9A-Za-z_\-]+)/$ /page.php?alias=$1
RewriteRule ^([0-9A-Za-z_\-]+)/([0-9]+)$ /$1/$2/ [R=301,L]
RewriteRule ^([0-9A-Za-z_\-]+)/([0-9]+)/$ /page.php?alias=$1&id=$2
RewriteRule ^$ /page.php

404 будет если запрос будет содержать, например, точку. Так как [0-9A-Za-z_\-] охватывает много. '\' перед '-' в коде добавьте вручную, не могу вставить здесь.

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
Shtogrin
На сайте с 02.11.2006
Offline
95
#4

И еще, возможно, пропустить существующие файлы/каталоги. Вставить сверху

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

Николай В.
На сайте с 07.09.2006
Offline
62
#5

Shtogrin, то что надо. Спасибо большое.

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