ЧПУ, слеш в конце

regiregi

Новичок
ЧПУ, слеш в конце

есть такой .htaccess
<IfModule mod_rewrite.c>
Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ http://%{HTTP_HOST}/$1/ [R]
RewriteRule ^(.*)$ /index.php?p=$1
</IfModule>

В результате пишет мне
PHP:
Found    The document has moved here.    
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
Хотя, как я понимаю, он должен редиректить.

Если правлю последнее правило и делаю его таким: RewriteRule ^(.*)$ index.php?p=$1, то последнее правило отрабатывает, а редирект с допиской слеша - нет (адрес типа http://127.0.0.1/test)


Апач 2.2
 

Dl

Новичок
Посмотри error.log и станет понятно.
Зачем тут вобще редирект?
 

regiregi

Новичок
редирект для адресов без слеша на конце, чтобы для поисковиков был один адрес.

-~{}~ 28.04.09 13:50:

Если же я убираю строчку RewriteRule ^(.*)$ /index.php?p=$1, то редирект начинает корректно срабатывать
 

Safary

Новичок
$link='/'.$_GET['link'];
if(substr($link,-1)=='/') $link=substr($link,0,-1);
$link=explode('/',$link); $link=delete_empty_values($link);
 

regiregi

Новичок
спасибо, но нужно на стороне апача провести преобразование
 

Фанат

oncle terrible
Команда форума
блин я тормоз.
хотя странно, почему верхнее правило срабатывает после нижнего...

но если так, то если лишний слешик после 1 добавить - проканает?

кстати, я пропустил может.
в еррор логе автору уже велели посмотреть?
 

Dl

Новичок
Ну правильно, срабатывает второе
index.php?p=test => /index.php?p=index.php
 

regiregi

Новичок
извиняюсь, забыл выложить

[Tue Apr 28 15:24:57 2009] [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., referer: http://127.0.0.1/test
 

Dl

Новичок
Первое срабатывает один раз, сначала
Потом работает только второе, и переписывается все на index.php, включая и index.php :)
Как вариант - исключить точку из регулярки
 

regiregi

Новичок
при дебаге вот что получаю
[Tue Apr 28 15:32:50 2009] [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.
[Tue Apr 28 15:32:50 2009] [debug] core.c(3046): [client 127.0.0.1] r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /sdfh
[Tue Apr 28 15:32:50 2009] [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., referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3046): [client 127.0.0.1] r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /index.php, referer: http://127.0.0.1/sdfh
[Tue Apr 28 15:32:50 2009] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /favicon.ico, referer: http://127.0.0.1/sdfh

-~{}~ 28.04.09 15:38:

Про точку из регулярки я так понял здесь:
RewriteRule ^(.*)$ /index.php?p=$1 поменял на

RewriteRule ^([A-z]+/)$ /index.php?p=$1

Работает.
 
Сверху