2015-07-23 2 views
0

Я хочу перенаправить (301) 900 URL-адресов. Я тщательно составил весь список, без ошибок, но ведет себя как строка, заменяющая. Возьмем, например, такую ​​строку:Перенаправление перезаписывает разные правила в .htaccess

Redirect 301 /assortiment/artikelen_ingedeeld_per_branche/transporteurs_verhuisbedrijven3/Verhuisdekens____baal_a_25_stuks_.html?id=979 http://example.com/221-transport-en-verhuisbedrijven 

И есть эта линия:

Redirect 301 /assortiment/ http://example.com/alle-producten 

Когда я посещаю /assortiment/artikelen_ingedeeld_per_branche/transporteurs_verhuisbedrijven3/Verhuisdekens____baal_a_25_stuks_.html?id=979 затем перенаправляет на /alle-productenartikelen_ingedeeld_per_branche/transporteurs_verhuisbedrijven3/Verhuisdekens____baal_a_25_stuks_.html?id=979

Notic в assortiment ->alle-producten замены в начале , Как будто он переписан как «str_replace», я вижу, что происходит, но я просто не понимаю .htaccess достаточно хорошо.

ответ

5

Первый перенаправление ничего не делает. Вы не можете поместить строку запроса в Redirect. Второй работает по назначению. Способ Redirect работает, это своего рода подход «начинается с». Таким образом, если директива:

Redirect /a /b 

затем:

  • /a будет перенаправлять /b
  • /a/ будет перенаправлять /b/
  • /abcd123 будет перенаправлять /bbcd123
  • /a/b/c/d будет перенаправлять /b/b/c/d

Кроме того, если правило:

Redirect /a/ /b 

затем:

  • /a/ будет перенаправлять /b
  • /a/b/c/d будет перенаправлять /bb/c/d

и т.д.

Если вы не хотите, чтобы это произошло, а затем использовать переадресацию матч:

RedirectMatch ^/assortiment/$ http://example.com/alle-producten 

Однако это не происходит, чтобы помочь с вашей строки запроса. Ни Redirect, ни RedirectMatch не будут соответствовать строке запроса. Вам необходимо будет использовать mod_rewrite и переписать правила:

RewriteEngine On 

RewriteCond %{QUERY_STRING} ^id=979$ 
RewriteRule ^assortiment/artikelen_ingedeeld_per_branche/transporteurs_verhuisbedrijven3/Verhuisdekens____baal_a_25_stuks_.html$ http://example.com/221-transport-en-verhuisbedrijven [L,R=301] 

RewriteRule ^assortiment/ http://example.com/alle-producten [L,R=301] 
+0

Большое спасибо, это все объясняет. У меня есть работа! – Matt

+0

Обратите внимание, что этот пример '/ abcd123 будет перенаправлен на/bbcd123' недействителен, он не будет перенаправлен. С переадресацией 'Только полные сегменты пути сопоставлены' – Zimmi

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