htaccess, RedirectMatch vs RewriteRule [NC,QSA,L]

SS
На сайте с 30.09.2010
Offline
60
1873

Здравствуйте, подскажите пожалуйста как можно сделать 301 редирект старых урлов на новые?

Мой .htaccess:

DirectoryIndex index.php

AddDefaultCharset UTF-8
Options -Indexes
ErrorDocument 404 http://www.site.ru/error.html

php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag register_globals off
php_flag allow_call_time_pass_reference on

RedirectMatch 301 ^/katalog/(.*)$ /catalog/
RedirectMatch 301 ^/montag/(.*)$ /mts/
RedirectMatch 301 ^/company/main.htm$ /company/
RedirectMatch 301 ^/company/address.htm$ /company/
RedirectMatch 301 ^/company/partner.htm$ /company/partners/
RedirectMatch 301 ^/company/vakans.htm$ /company/vacancy/
RedirectMatch 301 ^/map/map.htm$ /map.html
RedirectMatch 301 ^/montag/lic.htm$ /mts/about_mts/sertificat/
RedirectMatch 301 ^/montag/montag.htm$ /mts/
RedirectMatch 301 ^/montag/op.htm$ /mts/uslugi/
RedirectMatch 301 ^/montag/sert.htm$ /mts/about_mts/sertificat/
RedirectMatch 301 ^/montag/works.htm$ /mts/objects/

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R=301,L]

RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

RewriteCond %{HTTP_HOST} ^site.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?link=$1 [NC,QSA,L]

AddType application/force-download docx
AddType application/force-download xlsx
AddType application/force-download pptx
AddType application/force-download doc
AddType application/force-download xls
AddType application/force-download ppt
AddType application/force-download pdf

Если перейти по старой ссылке откроется например такой урл:

http://www.site.ru/catalog/?link=katalog/

или такой

http://www.site.ru/company/?link=company/main.htm

Насколько я понимаю:

'qsappend|QSA [=code]' (добавлять строку запроса)

Этот флаг указывает механизму преобразований на добавление, а не замену, строки запроса из URL к сущест...

и

'last|L [=code]' (последнее правило)

Остановить процесс преобразования на этом месте и не применять больше никаких правил преобразов...

В итоге и получается фигня. Пробовал снимать флаги - не помогает, пробовал коментить эту строку, cms отказывается работать: 302 говорит.

SS
На сайте с 30.09.2010
Offline
60
#1

неужели никто не разбирается?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий