2014-11-08 2 views
2

Я успешно реализован базовый фейсбук, как URL-адреса:mod_rewrite() слишком много внутренних переадресовывает

http://example.com/(username), который внутренне вызывает http://example.com/sites/(username) используя следующий mod_rewrite код:

Options +FollowSymLinks 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/sites/ 
RewriteRule ^([^/]+)/?(.*)$ sites/$1/$2 [NC,L] 

Обратите внимание, что (имя пользователя) папка существует внутри папки с папками

Вышеуказанные работы прекрасно подходят. Но сейчас я хочу, чтобы приукрасить мои другие страницы сайта, как: http://example.com/(username)/Image/2/ это должно внутренне назвать http://example.com/sites/(username)/index.php?type=image&id=2

Для этого я добавил следующий код во второй последней строке:

RewriteRule ^([^/]+)/Image/(.*)$ /sites/$1/index.php?type=image&id=$2 [NC,L] 

Я надеялся, что [L] в конце будет прекращено вычисление правила после этого. Но из журналов получается, что он переходит в бесконечный цикл и усечен.

Может кто-нибудь указать, что я делаю неправильно здесь?

ответ

0

Внутри папки DocumentRoot вы можете иметь это .htaccess:

Options +FollowSymLinks 
RewriteEngine on 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/([^/]+)/(\d+)/?$ sites/$1/index.php?type=$2*id=$3 [QSA,L] 

RewriteRule ^((?!sites[^/]+)(/.*)?$ sites/$1$2 [NC,L] 
Смежные вопросы