ShiskinA
Новичок
Помогите разобраться в mode_rewrite, плииз
Не совсем разбираюсь в данном вопросе, поэтому делал методом «копипаста и тыка». Вот что получилось:
RewriteCond %{REQUEST_URI} !/$
RewriteCOND %{REQUEST_URI} ![^/]*\.[^/]*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [NS,L,R=301]
RewriteRule ^index.php - [L]
RewriteRule ^robots.txt - [L]
RewriteRule ^_[^/]+/ - [L]
RewriteRule /_[^/]+/ - [L]
RewriteRule ^.+ ./index.php [L]
Требования ко всему этому чуду такие:
Если адрес ссылается на директорию, но не имеет закрывающего слэша, то идет перенаправление на этот же адрес, но со слэшом на конце. Если адрес ссылается на файл (имеющий расширение) то все ОК, перенаправления нет.
Дальше если это не robots.txt, а так же цель не находится в корневой директории, имеющей префикс «_», то запрос переадресовывается в index.php, если цель лежит в директории /_{dir_name}/ то обрабатывается самой целью.
В принципе эта конструкция работает, но сдается мне там много лишнего. Как бы улучшить ее????
И еще один вопрос, в пунктах
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
что означают буквы на конце -f и -d ?
Спасибо заранее.
Не совсем разбираюсь в данном вопросе, поэтому делал методом «копипаста и тыка». Вот что получилось:
RewriteCond %{REQUEST_URI} !/$
RewriteCOND %{REQUEST_URI} ![^/]*\.[^/]*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [NS,L,R=301]
RewriteRule ^index.php - [L]
RewriteRule ^robots.txt - [L]
RewriteRule ^_[^/]+/ - [L]
RewriteRule /_[^/]+/ - [L]
RewriteRule ^.+ ./index.php [L]
Требования ко всему этому чуду такие:
Если адрес ссылается на директорию, но не имеет закрывающего слэша, то идет перенаправление на этот же адрес, но со слэшом на конце. Если адрес ссылается на файл (имеющий расширение) то все ОК, перенаправления нет.
Дальше если это не robots.txt, а так же цель не находится в корневой директории, имеющей префикс «_», то запрос переадресовывается в index.php, если цель лежит в директории /_{dir_name}/ то обрабатывается самой целью.
В принципе эта конструкция работает, но сдается мне там много лишнего. Как бы улучшить ее????
И еще один вопрос, в пунктах
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
что означают буквы на конце -f и -d ?
Спасибо заранее.