Назад | Перейти на главную страницу

Проблема с перезаписью мода htaccess

Позвольте мне сразу начать с моей проблемы:

Options +FollowSymLinks
RewriteEngine On

RewriteBase / 
RewriteRule ^([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L]


RewriteRule ^([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3 [R=301,L]
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3/$4 [R=301,L]

Есть папка sinj.com.hr/administracija и когда я пытаюсь получить доступ http://localhost/sinj.com.hr/administracija Я перенаправлен на

http: //localhost/sinj.com.hr/administracija? var1 = administracija

Я бы хотел, чтобы пользователь вошел http://localhost/sinj.com.hr/administracija что он перенаправлен на http://localhost/sinj.com.hr/administracija/index.php. Я пытался сделать это с помощью заголовка ("Местоположение: ..."), но он всегда перенаправлял меня на http://localhost/sinj.com.hr/administracija?var1=administracija. Если папка administracija переименована, то функция header () работает. Есть идеи, как это решить?

Спасибо, Иль

Тестируя свою собственную конфигурацию Apache, я создал каталог DOCUMENT_ROOT/sinj.com.hr и разместил .htaccess файл вместе с простым index.php файл, который только что вернул мне содержимое $ _REQUEST.

Здесь .htaccess Я использовал:

Options +FollowSymLinks
RewriteEngine On

RewriteBase /sinj.com.hr
RewriteCond %{REQUEST_URI} !^/sinj.com.hr/index.php
RewriteRule ^([^/]+)$ index.php?var1=$1 [R,L,QSA]
RewriteRule ^([^/]+)/([^/]+)$ index.php?var1=$1&var2=$2 [R,L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?var1=$1&var2=$2&var3=$3 [R,L,QSA]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$ index.php?var1=$1&var2=$2&var3=$3&var4=$4 [R,L,QSA]

В RewriteCond линия ловит index.php чтобы он не зашел в рекурсивный цикл. Я также дал каждому RewriteRule флаги перенаправления (R) и добавления строки запроса (QSA) в дополнение к тому, чтобы сообщить им, что они применялись последним (L) правилом.

Я также изменил группировку совпадений, включив все, кроме косой черты (/), чтобы упростить сопоставление.

не удалось получить текст, отображаемый как код в комментарии, поэтому мне придется использовать ответ ...

RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^ %{REQUEST_URI}/index.php

Хмммм ... как насчет того, чтобы попробовать

DirectoryIndex

директиву в файле .htaccess в папке administracija? В этом случае я бы специально предложил:

DirectoryIndex index.php

Следующее правило вызывает такое поведение:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2 [L]

Это перенаправляет /sinj.com.hr/administracija к sinj.com.hr/index.php?var1=administracija