Mod_rewrite из каталога в файл

  • Автор темы 2People
  • Дата начала

2People

Guest
Mod_rewrite из каталога в файл (2)

Не получается написать .htaccess с указаниями для mod_rewrite.
Я хочу, чтобы URL вида
http://site.ru/news/about/cont/.../.../
перенаправлялся на
http://site.ru/index.php?url=news/about/cont/.../.../
Пробовал искать в форуме, но находится очень много топиков.
я пробовал писать такое:
RewriteEngine on
RewriteBase /
RewriteRule ^(.*/)$ /index.php?url=$1

Преременная передаётся, но только тогда, когда в адресе есть закрывающиё слэш.

Переделал .htaccess:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R]
RewriteRule ^(.*/)$ /index.php?url=$1

Ничего не изменилось, хотя в поиске находится тема про закрывающие слэш, и там написано, что такое работает.

-~{}~ 09.02.05 02:08:

Переписал .htaccess:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/)$ /index.php?url=$1

Т.к. директорий, на которые указывает урл не существует, то -d не подощло, поэтому написал !-f (не файл).
Теперь слэш добавляется и к существующим и к не существующим директориям. 1ая проблема решена.

Но теперь mod_rewrite ведёт себя странно (для меня странно) -
когда я захожу на http://site.ru/folder - не работает
когда я захожу на http://site.ru/folder/ - работает
когда я захожу на http://site.ru/folder/folder2 - работает
когда я захожу на http://site.ru/folder/folder2/ - работает

-~{}~ 09.02.05 04:02:

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

Алгоритм:
Если физический путь к запрашиваемому месту не файл и не папка (то есть не существует), то по необходимости добавить в конце к запрашиваемому пользователем URL`у слэш, и перенаправить на index.php?url=$1. ($1-запрашиваемый пользователем URL)(пернеправить без [R])

Если физический путь к запрашиваемому месту папка, то по необходимости добавить в конце к запрашиваемому пользователем URL`у слэш.

Иначе ничего не делать.

Получилось так:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*/)$ index.php?url=$1

В результате:

когда я захожу на http://site.ru/folder - не работает (сервер не найден)
когда я захожу на http://site.ru/folder/ - работает
когда я захожу на http://site.ru/folder/folder2 - работает
когда я захожу на http://site.ru/folder/folder2/ - работает
 
Сверху