2012-03-30 3 views
3

Мы работаем с несколькими доменами через один и тот же код, и мы хотим сохранить их изображения в соответствующих папках. Вот что мы делаем.htaccess перенаправление без знания пользователя

/images/www.domain1.com/logo.jpg /images/www.domain2.com/logo.jpg

теперь, что я хочу знать, возможно ли это в HTAccess, что мы перепишем URL-адреса, которые пользователь не подозревает. Это то, что я хочу, чтобы

<img src="/images/logo.jpg" /> 

должен внутренне стать через Htaccess

RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L,R=301] 

Но мой вопрос,

  1. выше Перенаправление постоянно петли
  2. Могу ли я добиться эффекта IMG без какого-либо пользователя или администратора?

С уважением,

Хурам

ответ

1

вы определенно не должны использовать R флаг, если вы не хотите, чтобы изменить URL в браузере. Однако даже без R флаг RewriteRule будет контур бесконечно, и в итоге вы получите internal server error. Используйте RewriteRule, как это:

RewriteCond %{ENV:REDIRECT_STATUS} !200 
RewriteRule ^images/(.*)$ images/%{HTTP_HOST}/$1 [L,NC] 

, который использует специальную внутреннюю переменную {ENV:REDIRECT_STATUS}, которая устанавливается в 200 раз правило RewriteRule применяется успешно.

+0

Очень хорошо сделал сэр. Это прекрасно работает. Спасибо, что научил меня новому трюку. – Khuram

+1

Вы очень желанны. Я рад, что это сработало для вас. – anubhava

6

Снимите R=301 просто сделать рерайт, а не перенаправлять:

RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L] 

Причина она постоянно зацикливание является то, что 301 редирект вызывает новый запрос на создание URL-адреса images/www.domain1.com/logo.jpg. Этот URL-адрес также соответствует вашему правилу ^images/(.*)$, поэтому он перенаправляется снова, до бесконечности.

Если вы действительно хотите перенаправить 301 (я подозреваю, что вы этого не сделали, но если вы это сделали), вы можете решить проблему бесконечного цикла, добавив некоторые условия перезаписи, чтобы пропустить перенаправление, если домен уже включен:

RewriteCond {REQUEST_URI} !^images/www.domain1.com/(.*)$ 
RewriteCond {REQUEST_URI} !^images/www.domain2.com/(.*)$ 
RewriteRule ^images/(.*)$ /images/{HTTP_HOST}/$1 [L,R=301] 
+0

Привет, Эрик, спасибо за объяснение, я знал, что рядом, но теперь я знаю, почему я делаю каждый из этих шагов. Я постараюсь, а затем пометьте это как законченное. – Khuram

+0

Ответ на этот вопрос был приведен ниже. Этот снова снова зациклился. Еще раз спасибо. – Khuram

Смежные вопросы