2013-03-11 3 views
0

Я дал старый веб-сайт новую CMS. Теперь мне нужно .htaccess с 3-х частей, но он работает только с 2 из них:Перенаправление постоянного, переадресация и переадресация URL-адресов

  1. Перенаправление постоянный
  2. WWW редирект (это не работает)
  3. URL переписывания

Теперь я объясню что-то еще. Часть 0 (только для всей совокупности)

RewriteEngine On 

Часть 1 (Перенаправление постоянного) я использовать для перенаправления URL-адреса старой CMS к содержанию нового.

RewriteCond %{THE_REQUEST} !/de-old-content.html 
Redirect permanent /de-old-content.html /old/content.html 

Часть 2 (www redirect) Я использую, чтобы избежать дублирования контента.

RewriteCond %{HTTP_HOST} ^website.de [NC] 
RewriteRule ^(.*)$ http://www.website.de/$1 [L,R=301] 

Часть 3 (URL перезапись), чтобы преобразовать "старый/content.html" в "index.php? ADRESSE = старый/содержание"

RewriteRule ^(.*)\.html$ index.php?adresse=$1 [l,qsa] 

кнопку [л, QSA] только позволяет используйте $ _GET.

Можно ли объединить эти детали?

Если я использую часть 2 он показывает правильное содержание с

http://www.website.de/abc/def/ghi.html

но без WWW этого перенаправления

http://www.website.deabc/

Я думаю, что должна быть misstake в этой части.

Заранее спасибо.

+0

Переадресовывает ли он неправильный хост? Обратите внимание, что директива ** Redirect ** не работает с условием RewriteCond, они являются частью различных модулей. – kjetilh

+0

Пожалуйста, используйте URL-адреса для примеров, а не правил. Они не работают в первую очередь. –

ответ

1

Redirect является частью mod_alias, а RewriteCond и RewriteRule являются частью mod_rewrite. Как следствие, RewriteCond части 1 применим к RewriteRule части 2, что сделало бы его неправильным.

Лучше избегать использования как перезаписываемой, так и переадресации.

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^website.de [NC] 
RewriteRule ^(.*)$ http://www.website.de/$1 [L,R=301] 

RewriteRule ^de-old-content\.html$ /old/content.html [L,R=301] 

RewriteRule ^(.*)\.html$ index.php?adresse=$1 [L,QSA] 

PS. чтобы сохранить свое здравомыслие, используйте 302 во время тестирования. Как только все будет работать, измените их на 301. Поскольку вы уже использовали 301-е, также очистите кеш браузера, поэтому все старые 301-ые удалены из кеша браузера.

+0

Спасибо, это работает отлично. –

Смежные вопросы