При написании mod_rewrite
правил правила применяются в том порядке, в котором они появляются.
Чтобы перенаправить старый домен на новый домен, нужно, чтобы это правило было первым в вашем файле .htaccess
или httpd.conf
- все остальные правила должны появиться после него.
Если вы хотите перенаправить только определенную директорию , это сделает следующее правило:позволяя остальной части сайта функционировать нормально:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Only Matching Directories
RewriteCond %{REQUEST_URI} ^/(fr|fr/.*)$
RewriteRule ^(.*)$ http://brand.new-domain.com/fr/$1 [R=301,L]
</IfModule>
Если вы хотите перенаправить весь сайт, это будет выполняться по следующему правилу:
<IfModule mod_rewrite.c>
RewriteEngine On
# Redirect Entire Site to New Domain
RewriteCond %{HTTP_HOST} ^old.domain.com$ [OR]
RewriteCond %{HTTP_HOST} ^other-old.domain.com$ [NC]
RewriteRule ^(.*)$ http://brand.new-domain.com/$1 [R=301,L]
</IfModule>
Если вы хотите разрешитьсканеры знают, что ваш контент перемещен, и хотят сделать переход как можно более плавным, обязательно сохраняйте флаг 301 Redirect в RewriteRule.
Это гарантирует, что пользователи и поисковые системы будутнаправлено на правильную страницу.
Пока мы обсуждаем эту тему, в рамках выпуска EE 2.2 EllisLab теперь "официально" предлагает ограниченную техническую поддержку для удаления index.php из ExpressionEnURL-адреса gine .
Просто добавьте или обновите свой код в соответствии со следующими правилами, следя за тем, чтобы учесть все правила, которые у вас уже есть:
<IfModule mod_rewrite.c>
RewriteEngine On
# Removes index.php
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
# If 404s, "No Input File" or every URL returns the same thing
# make it /index.php?/$1 above (add the question mark)
</IfModule>