Mod_rewrite и путь site.com/folder

Кухан

Новичок
Mod_rewrite и путь site.com/folder

Очередная проблема с mod_rewrite :((
Мне нужно, чтобы когда пользователь вводил адрес типа site.com/article/1 выполнялся скрипт index.php?path=article/1
Использую следующий код:
Код:
RewriteEngine On
RewriteRule (.*)$  index.php?page=$1
В общем, код работает нормально, только есть одна проблема. Если положить файл .htaccess в какую-нибудь папку, например rewrite и в браузере ввести адрес localhost/rewrite (БЕЗ слеша в конце), то пользователь перенаправляется (301 Moved Permanetly) на страницу http://localhost/rewrite/?page=F:/Inet/rewrite , а переменная $_GET['page'] равна index.php
Если адрес вводить со слешом в конце, то все нормально работает, $_GET['page'] просто равна пустой строке. Если этот скрипт положить в корневую директорию веб-сервера, а не в какую-то папку (т.е. адрес будет имет вид http://site.com), то тоже все работает нормально, при чем не важно есть слеш в конце или нет.
 

Alesto

Новичок
На тебе готовое решение

DirectoryIndex index.php

ErrorDocument 404 /404/

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ index.php?%{QUERY_STRING}
 

Кухан

Новичок
Alesto, а как ты определяешь адрес?
Пробовал изменить твой скрипт, чтобы адрес передавался в переменной $_GET['page'] на
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*)$ index.php?%page=$1&{QUERY_STRING}
Опять таже самая проблема.

-~{}~ 18.11.05 19:08:

Все проблему решил, надо было просто добавить строчку:
Код:
RewriteCond %{REQUEST_URI} !rewrite$ # вместо rewrite имя папки
В итоге, получился вот такой скрипт:
Код:
RewriteEngine On
RewriteCond %{REQUEST_URI} !rewrite$  #если адрес заканчивается именем папки БЕЗ слеша, то не делаем реврайт
RewriteRule ^(.*)$ index.php?page=$1&%{QUERY_STRING} [L] #адрес пишется в $_GET['page']
 
Сверху