mod-rewrite удалить имя папки из URL

Я использую OJS, и я установил его в папке под названием "журналы". Я создал там несколько журналов (например, "journal1", "journal2" и т. Д.).

Теперь я получаю такие пути: www.example.com/journals/index.php/journal1,www.example.com/journals/index.php/journal2, так далее.

Что я хочу это карта www.example.com/journals/index.php/journal1чтобы выглядеть как www.example.com/index.php/journal1 (удаление части журнала из URL).

Я не могу переместить OJS в root, потому что у меня там есть другие файлы.

Здесь .htaccess файл, который я использую в настоящее время (он находится в папке "журналы" и дает мне 500)

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^journals
RewriteRule ^(.*) /journals/$1 [L]
</IfModule>

Также вот ошибка.log

[Fri Oct 12 22:16:45 2012] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 

1 ответ

Решение

Когда вы помещаете эти правила в файл htaccess в вашем /journals каталог, это вызывает цикл перезаписи. $1 никогда не начинается с журналов, потому что вы находитесь в каталоге журналов, поэтому правило продолжает применяться.

Вам нужно будет поместить что-то подобное в ваш файл htaccess в корне вашего сайта, / каталог:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/journals
RewriteRule ^index\.php(.*)$ /journals/index.php$1 [L]
Другие вопросы по тегам