Прошу помощи с htaccess

K
На сайте с 18.11.2008
Offline
84
491

Ситуация такая. На хостинге стоит джумла, теперь необходимо подключить небольшой скриптик, который является простеньким движком для вывода контента. Движок имеет свой htaccess, который объединить с джумловским не получается.

Джумла:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} !^/index.php

RewriteCond %{REQUEST_URI} !^/mydir #эта строка было добавлена, чтобы при обращении к урлу http://site.com/mydir/ не происходила обработка через index.php

RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$ [NC]

RewriteRule (.*) index.php

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

Мой htaccess:

RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} .+[^/]$

RewriteCond %{REQUEST_URI} !.html$

RewriteCond %{REQUEST_URI} !.php$

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

RewriteRule ^(mydir)/$ /script.php?cat=$1 [L]

RewriteRule ^(mydir)/([^\d]*)/$ /script.php?cat=$1&subcat=$2 [L]

RewriteRule ^(mydir)/(\d*)/$ /script.php?cat=$1&page=$2 [L]

RewriteRule ^(mydir)/([^\d]*)/(\d*)/$ /script.php?cat=$1&subcat=$2&page=$3 [L]

RewriteRule ^(mydir)/([^/]*\.html)$ /script.php?cat=$1&url=$2 [L]

Дописал я его просто ниже. На данный момент получается, что при обращении к http://site.com/mydir/ вылезает 404, причем не джумловская, а серверная. При обращении к срипту напрямую (http://site.com/script.php?cat=trampam&subcat=parampam&page=3) все отрабатывает нормально, т.е. загвоздка именно в моем аксессе.

Спасибо.

C
На сайте с 04.02.2005
Offline
291
#1

RewriteRule ^(mydir)/$ /script.php?cat=$1 [L]

А зачем скобки?

K
На сайте с 18.11.2008
Offline
84
#2
Chukcha:
RewriteRule ^(mydir)/$ /script.php?cat=$1 [L]

А зачем скобки?

Первоначально это выглядело так:

RewriteRule ^([^\d]*)/$ /script.php?cat=$1 [L]

Параметр, стоящий в скобках, передается в $1.

Т.е., по моим представлениям строка

RewriteRule ^(mydir)/$ /script.php?cat=$1 [L]

При запросе http://site.ru/mydir/ сделает вот так: http://site.ru/script.php?cat=mydir

siv1987
На сайте с 02.04.2009
Offline
427
#3

Ниже дописывать не надо.

Пишите свои правила в htaccess папки скрипта (естественно без mydir в реврайтах). А в главном htaccess после RewriteEngine On (или RewriteBase) добавьте

RewriteRule ^mydir/ - [L]

C
На сайте с 04.02.2005
Offline
291
#4

Так вот понятия не верные

в скобках вы создаете группу ()

и в данном случае у вас группа mydir и туда попадает $1=mydir

mydir - это всего лишь эквивалент script.php

т.е. mydir - это название категории для скрипта script.php

RewriteRule ^mydir/$ /script.php?cat=mydir [L]

---------- Добавлено 10.06.2013 в 10:36 ----------

siv1987, это если у него есть папка скрипта.

siv1987
На сайте с 02.04.2009
Offline
427
#5
Chukcha:
Так вот понятия не верные
в скобках вы создаете группу ()

По логике все правильно. Просто, судя по всему срабатывают предыдущее реврайты.

Chukcha:
siv1987, это если у него есть папка скрипта.

Так а зачем извращаться и делать виртуальную папку, когда можно создать нормальную, и там уже реврайтить как захочется без боязни что сработает что-то лишнее.

K
На сайте с 18.11.2008
Offline
84
#6

Спасибо большое. Вроде, победил путем запихивания скрипта в физическую папку, как говорится, не мудрствуя лукаво.

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