Помогите с modRewrite

12
malls
На сайте с 08.08.2005
Offline
255
677

Надо обработать исключение, не изобретается ничего :(

Надо сделать:

1. http://domain.ru/folder/url.html => index.php?fold=folder&file=url

2. http://domain.ru/folder/ => index.php?fold=folder

3. http://domain.ru/folder => index.php?fold=folder

первые два реализуются через:

RewriteRule ^((.*)/)?(.*)$ index.php\?fold=$2&file=$3 [L,QSA]

но с п.3 получается ошибка.

попробовал разных вариантов - но тогда ошибка вылетает с п.1 :(

давно не делал этого - помогите кто-нибудь плиз.

[Удален]
#1

RewriteRule ^([^/]*)/([^/]*)$ index.php\?fold=$2&file=$3 [L]

RewriteRule ^/([^/]*)$ index.php\?fold=$1 [L]
malls
На сайте с 08.08.2005
Offline
255
#2
bestq:
RewriteRule ^([^/]*)/([^/]*)$ index.php\?fold=$2&file=$3 [L]

RewriteRule ^/([^/]*)$ index.php\?fold=$1 [L]

не - не работает так. я пробовал [^/]* уже. :(

даже местами поменять чтобы первым "исключение" обрабатывалось - не помогает.

П
На сайте с 08.06.2007
Offline
63
#3

RewriteRule ^([^/]*)/([^/]*)\.html$ index\.php\?fold=$1&file=$2 [L,QSA]

RewriteRule ^([^/]*)/?$ index\.php\?fold=$1 [L,QSA]
malls
На сайте с 08.08.2005
Offline
255
#4
Патапыч:
RewriteRule ^([^/]*)/([^/]*)\.html$ index\.php\?fold=$1&file=$2 [L,QSA]

RewriteRule ^([^/]*)/?$ index\.php\?fold=$1 [L,QSA]

неа - так вообще все отлетает :( стили/скрипты - все

П
На сайте с 08.06.2007
Offline
63
#5

Тогда может вот так..

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)\.html$ index\.php\?fold=$1&file=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ index\.php\?fold=$1 [L,QSA]
siv1987
На сайте с 02.04.2009
Offline
427
#6

RewriteRule ^((.*)/?)(.*)$ index.php?fold=$2&file=$3 [L,QSA]

Либо

RewriteRule ^(([^/]+)/?)(.*)$ index.php?fold=$2&file=$3 [L,QSA]

IL
На сайте с 20.04.2007
Offline
435
#7


RewriteRule ^([^\.\/]+)/?$ index.php\?fold=$1 [L,QSA]
RewriteRule ^((.*)/)?(.*)\.html$ index.php\?fold=$2&file=$3 [L,QSA]
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
malls
На сайте с 08.08.2005
Offline
255
#8
Патапыч:
Тогда может вот так..
RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)\.html$ index\.php\?fold=$1&file=$2 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?$ index\.php\?fold=$1 [L,QSA]

нет - глючит на корне

ivan-lev:

RewriteRule ^([^\.\/]+)/?$ index.php\?fold=$1 [L,QSA]
RewriteRule ^((.*)/)?(.*)\.html$ index.php\?fold=$2&file=$3 [L,QSA]

В этом варианте он отрабатывает п.1 и п.3 и глючит на всем остальном, включая корень.

IL
На сайте с 20.04.2007
Offline
435
#9
malls:
В этом варианте он отрабатывает п.1 и п.3 и глючит на всем остальном, включая корень.

Специально проверял - отработали все 3 пункта (для варианта с .html следует учитывать, что отличается от Вашего тем, что в file расширение не передаётся)

Что значит "глючит корень"? Что не должно редиректиться?

izbushka
На сайте с 08.06.2007
Offline
110
#10

Предлагаю 3-й вопрос решить более глобально, заодно избавившись от дублей:

RewriteRule ^([^\.]*[^\/])$ $1/ [R=301,L]

Редиректить все урлы, не содержащие в себе точку и не заканчивающиеся на слеш, в такие же со слешем вконце.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий