Здравствуйте,
В ходе работ по переносу сайта на новый домен столкнулись со следующей ситуацией при прописании 301 редиректов в htaccess файле.
Дано:
старый адрес
нужный новый адрес
Часть редиректов работает, часть переносит на страницы вида /agents/21-agenty.html новый адрес с двойным слешем.и ненужным хвостом от старого url (лишняя часть выделено жирным).
Код htaccess:
Options -Indexes ErrorDocument 404 /404.php
php_flag apc.cache_by_default Off
<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2
php_value max_input_vars 10000
php_value apc.num_files_hint 20000
php_value apc.user_entries_hint 20000
php_value apc.ttl 86400
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^2204401.ru
RewriteRule (.*) [R=301,L]
RewriteCond %{HTTP_HOST} ^
RewriteRule (.*) [R=301,L]
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) [R=301,L]
RewriteCond %{REQUEST_URI} ^/index\.(.+)$
RewriteRule ^.*$ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
Redirect 301
</IfModule>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
ExpiresByType image/png "access plus 3 day"
ExpiresByType text/css "access plus 3 day"
ExpiresByType application/javascript "access plus 3 day"
</IfModule>
Выяснили, что проблема частично снимается порядком расположения исходных url по алфавиту и уровню вложенности. Но для ссылок ниже 2 уровня редирект так и не работает.
Знатоки htaccess и urlrewrite.php! Помогите пожалуйста советом.
В ходе работ по переносу сайта на новый домен столкнулись со следующей ситуацией при прописании 301 редиректов в htaccess файле.
Дано:
старый адрес
нужный новый адрес
Часть редиректов работает, часть переносит на страницы вида /agents/21-agenty.html новый адрес с двойным слешем.и ненужным хвостом от старого url (лишняя часть выделено жирным).
Код htaccess:
Options -Indexes ErrorDocument 404 /404.php
php_flag apc.cache_by_default Off
<IfModule mod_php5.c>
php_flag session.use_trans_sid off
#php_value display_errors 1
php_value mbstring.internal_encoding UTF-8
php_value mbstring.func_overload 2
php_value max_input_vars 10000
php_value apc.num_files_hint 20000
php_value apc.user_entries_hint 20000
php_value apc.ttl 86400
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^2204401.ru
RewriteRule (.*) [R=301,L]
RewriteCond %{HTTP_HOST} ^
RewriteRule (.*) [R=301,L]
RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule (.*) [R=301,L]
RewriteCond %{REQUEST_URI} ^/index\.(.+)$
RewriteRule ^.*$ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
Redirect 301
</IfModule>
<IfModule mod_dir.c>
DirectoryIndex index.php index.html
</IfModule>
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
ExpiresByType image/png "access plus 3 day"
ExpiresByType text/css "access plus 3 day"
ExpiresByType application/javascript "access plus 3 day"
</IfModule>
Выяснили, что проблема частично снимается порядком расположения исходных url по алфавиту и уровню вложенности. Но для ссылок ниже 2 уровня редирект так и не работает.
Знатоки htaccess и urlrewrite.php! Помогите пожалуйста советом.