Refresh » 2010.09.19 10:40 |
Добрый день. Имеется директория /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
Благодарю. |
Gemorroj » 2010.09.19 11:13 |
Странно, я почему-то не задумывался по этому поводу. Сходу решения на ум не приходит красивого. Просто, как вариант вышенаписанного
|
Refresh » 2010.09.19 11:28 |
Gemorroj, меня всегда терзали сомнения, если .htaccess находится в директории /users/, нужно ли прописывать пути к этой директории в реврайте?
RewriteCond %{REQUEST_URI} ^/users/[0-9]+/?$ RewriteRule ^/users/([0-9]+)/?$ ?id=$1
Некоторые еще и указывают RewriteBase / |
Gemorroj » 2010.09.19 12:02 |
Ага, вот от RewriteBase и зависит какой путь указывать. по умолчанию он вроде бы ./. что значит текущую директорию |