2013-02-28 2 views
0

Я пытаюсь перенаправить все /admin вызовы в подобласти с этими двумя линиями в .htaccess:Htaccess RewriteCond и переписать правило не работает должным образом

RewriteCond %{REQUEST_URI} ^admin [NC] 
RewriteRule ^(.*)/$ http://admin\.somedomain\.com/$1/ [R,L] 

Ну, ничего не происходит. Он просто игнорирует правило перенаправления и показывает содержимое каталога/admin.

Просто для справки (и пропускать запросы, чтобы вставить весь мой .htaccess файл), здесь:

Options +FollowSymlinks -Indexes 
RewriteEngine on 

Redirect 404 /favicon.ico 

RewriteCond %{REQUEST_URI} ^admin [NC] 
RewriteRule ^(.*)/$ http://admin\.somedomain\.com/$1/ [R,L] 

# Send all admin. traffic to /admin 
RewriteCond %{HTTP_HOST} ^admin\. [NC] 
RewriteRule ^(.*)$ /admin/$1 [L] 

# Check for www. and add it 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTP_HOST} !^admin\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R,L] 

# Add trailing slash if not found 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !favicon.ico 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ /$1/ [R,L] 

# Process virtual links/directories 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !favicon.ico 
RewriteRule ^(.*)$ index.php/?$1 [QSA,L] 

ответ

0
RewriteCond %(HTTP_HOST} !^admin\.somedomain\.com$ 
RewriteCond %{REQUEST_URI} ^/admin [NC] 
RewriteRule ^(.*)$ http://admin.somedomain.com$1 [R,L] 

Вы отсутствовали ведущую косую черту на своем матче RewriteCond. С предположением, что admin.somedomain.com может быть в той же конфигурации, что и другой домен, я также добавил проверку, чтобы гарантировать, что правило не применяется, если домен уже admin.somedomain.com. В RewriteRule я сделал несколько незначительных изменений: вы не соглашаетесь с правой стороны, поэтому вам не нужно избегать точек.

Есть некоторые проблемы с вашими остальными правилами. Это не будет работать, например:

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 

Вы не можете использовать переменные сервера на этой стороне правила.

+0

Странная часть состоит в том, что ваши первые фиксированные правила не работают, если я вхожу в 'www.somedomain.com/admin', он не перенаправляет, а просто показывает содержимое каталога'/admin'. Второе правило работает (только что протестировано). –