Форум: "Прочее";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
ВнизГде ошибка в настройке mod_rewrite? Найти похожие ветки
← →
Дмитрий С © (2009-09-04 10:06) [0]Есть виртуальный хост. В его папке лежит файл .htaccess:
RewriteEngine On
# Исключаем повторную обработку
RewriteCond %{ENV:REDIRECT_STOPFLAG} =1
RewriteRule . - [L]
RewriteRule . - [E=STOPFLAG:1]
# Доступ к картинкам, css и фоткам во всех папках
RewriteRule (/|^)((i|css|ph)/.*)$ $2 [L]
# Доступ к документам по сокращенному адресу
RewriteRule (/|^)~(/.*)$ doc$2
# дописываение .php в конец файла
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(doc/(.+/)?[^.]+)$ $1.php [L]
В папке doc/university/ есть файл about.php, который нормально открывается по запросу: http://www.domain.ru/~/university/about.php (картинки на месте).
Но по запросу:
http://www.domain.ru/~/university/about
Сервер выдает:Not Found
The requested URL /doc/university/about/university/about.php was not found on this server.
Откуда берется это "удвоение адреса"?
Сделал RewriteLog с уровнем 9:[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add path info postfix: D:/Home/www/domain.ru/www/htdocs/~ -> D:/Home/www/domain.ru/www/htdocs/~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] strip per-dir prefix: D:/Home/www/domain.ru/www/htdocs/~/university/about -> ~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] applying pattern "." to uri "~/university/about"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (4) [perdir D:/Home/www/domain.ru/www/htdocs/] RewriteCond: input="" pattern="=1" => not-matched
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add path info postfix: D:/Home/www/domain.ru/www/htdocs/~ -> D:/Home/www/domain.ru/www/htdocs/~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] strip per-dir prefix: D:/Home/www/domain.ru/www/htdocs/~/university/about -> ~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] applying pattern "." to uri "~/university/about"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (5) setting env variable "STOPFLAG" to "1"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add path info postfix: D:/Home/www/domain.ru/www/htdocs/~ -> D:/Home/www/domain.ru/www/htdocs/~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] strip per-dir prefix: D:/Home/www/domain.ru/www/htdocs/~/university/about -> ~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] applying pattern "(/|^)((i|css|ph)/.*)$" to uri "~/university/about"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add path info postfix: D:/Home/www/domain.ru/www/htdocs/~ -> D:/Home/www/domain.ru/www/htdocs/~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] strip per-dir prefix: D:/Home/www/domain.ru/www/htdocs/~/university/about -> ~/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] applying pattern "(/|^)~(/.*)$" to uri "~/university/about"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (2) [perdir D:/Home/www/domain.ru/www/htdocs/] rewrite "~/university/about" -> "doc/university/about"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add per-dir prefix: doc/university/about -> D:/Home/www/domain.ru/www/htdocs/doc/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add path info postfix: D:/Home/www/domain.ru/www/htdocs/doc/university/about -> D:/Home/www/domain.ru/www/htdocs/doc/university/about/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] strip per-dir prefix: D:/Home/www/domain.ru/www/htdocs/doc/university/about/university/about -> doc/university/about/university/about
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] applying pattern "^(doc/(.+/)?[^.]+)$" to uri "doc/university/about/university/about"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (4) [perdir D:/Home/www/domain.ru/www/htdocs/] RewriteCond: input="D:/Home/www/domain.ru/www/htdocs/doc/university/about" pattern="!-f" => matched
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (2) [perdir D:/Home/www/domain.ru/www/htdocs/] rewrite "doc/university/about/university/about" -> "doc/university/about/university/about.php"
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add per-dir prefix: doc/university/about/university/about.php -> D:/Home/www/domain.ru/www/htdocs/doc/university/about/university/about.php
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (2) [perdir D:/Home/www/domain.ru/www/htdocs/] strip document_root prefix: D:/Home/www/domain.ru/www/htdocs/doc/university/about/university/about.php -> /doc/university/about/university/about.php
[www.domain.ru/sid#67da70][rid#1ab9330/initial] (1) [perdir D:/Home/www/domain.ru/www/htdocs/] internal redirect with /doc/university/about/university/about.php [INTERNAL REDIRECT]
[www.domain.ru/sid#67da70][rid#19aba80/initial/redir#1] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] add path info postfix: D:/Home/www/domain.ru/www/htdocs/doc/university/about -> D:/Home/www/domain.ru/www/htdocs/doc/university/about/university/about.php
[www.domain.ru/sid#67da70][rid#19aba80/initial/redir#1] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] strip per-dir prefix: D:/Home/www/domain.ru/www/htdocs/doc/university/about/university/about.php -> doc/university/about/university/about.php
[www.domain.ru/sid#67da70][rid#19aba80/initial/redir#1] (3) [perdir D:/Home/www/domain.ru/www/htdocs/] applying pattern "." to uri "doc/university/about/university/about.php"
[www.domain.ru/sid#67da70][rid#19aba80/initial/redir#1] (4) [perdir D:/Home/www/domain.ru/www/htdocs/] RewriteCond: input="1" pattern="=1" => matched
[www.domain.ru/sid#67da70][rid#19aba80/initial/redir#1] (1) [perdir D:/Home/www/domain.ru/www/htdocs/] pass through D:/Home/www/domain.ru/www/htdocs/doc/university/about
Временный метки удалил.
Вообще хочу, чтобы можно было указывать страницу без расширения. Т.е. если расширения нет, то используется файл с таким именем и расширением php.
← →
Дмитрий С © (2009-09-04 11:28) [1]А если вот эту строку
# Доступ к документам по сокращенному адресу
RewriteRule (/|^)~(/.*)$ doc$2
Поменять на# Доступ к документам по сокращенному адресу
RewriteRule (/|^)~(/.*)$ doc$3
то все работает как надо. А почему? Глюк регулярного выражения?
← →
Дмитрий С © (2009-09-04 15:26) [2]Какой-то нелогичный модуль.
RewriteEngine On
RewriteRule ^.*$ $0 [L]
Получаем ошибку:
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.
Хотя и L стоит и в мануале написано, что после прохождения последнего RewriteRule процесс заканчивается. Это еще как-то можно понять, дальше — больше:RewriteEngine On
# Исключаем повторную обработку
RewriteCond %{ENV:REDIRECT_STOPFLAG} =1
RewriteRule .? - [L]
RewriteRule .? - [E=STOPFLAG:1]
# Далее три правила добавляют CBA в начало адреса и ABC в конце (это ожидаемый результат)
RewriteRule ^.*$ A$0A
RewriteRule ^.*$ B$0B
RewriteRule ^.*$ C$0C
Выполняется запрос /a/b/c, результат поражает:Not Found
The requested URL /CBAa/b/cA/b/cB/b/cC was not found on this server.
CBА добавилось, но каким образом появилось то, что появилось справа? Логика непонятна. Но и это не все:# Исключаем повторную обработку
RewriteCond %{ENV:REDIRECT_STOPFLAG} =1
RewriteRule .? - [L]
RewriteRule .? - [E=STOPFLAG:1]
# Если адрес начинается на "a", должен быть редирект, с приписываением буквы "b" слева
RewriteRule ^a.*$ b$0 [R]
Выполняется запрос /a/b/c, результат просто убивает: редирект на /D:/Home/www/domain.ru/www/htdocs/ba/b/c. Откуда в uri взялся путь?
Кто-нибудь может прокомментировать результат? Куда можно обратиться с вопросом (английский не знаю)?
← →
Дмитрий С © (2009-09-07 08:07) [3]Неужели у меня одного такое? Это правильно?
Я и на windows и на unix проверил уже.
← →
Дмитрий С © (2009-09-07 13:37) [4]Нашел этот баг тут:
https://issues.apache.org/bugzilla/show_bug.cgi?id=38642
Кто-нибудь может помочь понять что к чему?
← →
Дмитрий С © (2009-09-07 14:15) [5]Наконец-то решил. Три рабочих дня потратил на поиски :) УРАА
Кто-нибудь будет искать в поиске, пусть найдет:
*) mod_rewrite: Introduce DiscardPathInfo|DPI flag to stop the troublesome
way that per-directory rewrites append the previous notion of PATH_INFO
to each substitution before evaluating subsequent rules.
PR38642 [Eric Covener]
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c