Вы не зашли.
Главная » PHP » mod_rewrite
#1. Refresh Off (0)
Участник
2010.09.19 14:02
Добрый день.
Имеется директория /users/ Посредством GET'а туда передаются ID. Например, /users/?id=324
Необходимо в адресной строке браузера вывести /users/?id=324 как /users/324/

Для это вполне достаточно:

RewriteEngine On
RewriteRule ^users/([0-9]+)/?$ ?id=$1


Но при данном реврайте возникают ошибки, к примеру начинает пропускать точки и слеши:
/users/324....../ или /users/324/////////

Решение:

RewriteEngine On
RewriteCond %{REQUEST_URI} /users/[0-9]+$
RewriteRule ^(.*)$ /users/$1/ [R=301]
RewriteCond %{REQUEST_URI} /users/[0-9]+/$
RewriteRule ^users/([0-9]+)/$ ?id=$1 [L]


Геморрой, в первую очередь меня интересует твое мнение, как тебе такой подход?
Также, если не затруднит, возможно требуется легкая корректировка реврайта (переписать пути /users/ или добавить/убрать флаги), то есть как должен выглядеть реврайт выше в идеале.
Рабочая директория: /users/ именно в ней находится .htaccess

Благодарю.
Отредактировано Refresh (2010.09.19 14:02)
#2. Gemorroj On (107)
Administrator
2010.09.19 15:03
Странно, я почему-то не задумывался по этому поводу. Сходу решения на ум не приходит красивого.
Просто, как вариант вышенаписанного
Код:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/users/[0-9]+/?$
RewriteRule ^/users/([0-9]+)/?$ ?id=$1
#3. Refresh Off (0)
Участник
2010.09.19 15:03
Gemorroj, меня всегда терзали сомнения, если .htaccess находится в директории /users/, нужно ли прописывать пути к этой директории в реврайте?

RewriteCond %{REQUEST_URI} ^/users/[0-9]+/?$
RewriteRule ^/users/([0-9]+)/?$ ?id=$1

Некоторые еще и указывают RewriteBase /
#4. Gemorroj On (107)
Administrator
2010.09.19 16:04
Ага, вот от RewriteBase и зависит какой путь указывать. по умолчанию он вроде бы ./. что значит текущую директорию
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.014 s