301 Redirect Mod-Rewrite (каталог на отдельный файл)

Google проиндексировал веб-сайт, который я заменил. Я хочу перенаправить существующую структуру URL, но у меня две проблемы.

1) Я пытаюсь перенаправить http://www.abc.com/testimonials/ на http://www.abc.com/testimonials.html, и это не работает. Вот что происходит.

а) С WWW ничего не происходит. б) Без WWW он перенаправляет на testimonials.html/, но с косой чертой в конце

Вот код, который у меня есть в файле htaccess

rewriteengine on
rewritecond %{HTTP_HOST} ^www.abc.com$ [OR]
rewritecond %{HTTP_HOST} ^abc.com$
rewriterule ^testimonials$ "http\:\/\/abc\.com\/testimonials\.html" [R=301,L] 

Будем очень признательны за любые советы, чтобы заставить эту работу работать.


person John Salanski    schedule 26.10.2011    source источник


Ответы (1)


Попробуйте этот код:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.abc\.com$ [OR]
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteRule ^/testimonials/$ http://abc.com/testimonials.html [R=301,L]

Если вы не хотите удалять «www» из имени сайта, попробуйте этот код:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.abc\.com$ [OR]
RewriteCond %{HTTP_HOST} ^abc\.com$
RewriteRule ^/testimonials/$ /testimonials.html [R=301,L]

Есть хорошие примеры использования mod_rewrite: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond

person Alexey Morozov    schedule 26.10.2011
comment
по-прежнему идет на testimonials.html/ на самом деле. У меня есть только другой код: codeRewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(.*)index\.(html?|php|asp|cfm)\ HTTP/ RewriteRule ^(. *)index\.(html?|php|asp|cfm)$ abc.com/$1 [ R=301,L] и RewriteCond %{HTTP_HOST} ^abc\.com$ [NC] RewriteRule ^(.*)$ abc.com/$1 [L,R=301]code - person John Salanski; 27.10.2011
comment
Что они делают? Они перенаправляют запросы в папку abc.com (не на сайт)? Если вы хотите перенаправить на сайт, вы должны добавить http:// перед названием сайта. И даже в этой ситуации ваше последнее RewriteRule всегда будет перенаправлять в одно и то же место. Я немного изменил код в ответе и не забудьте перезапустить apache. - person Alexey Morozov; 27.10.2011