Назад | Перейти на главную страницу

Почему все остальные 301 редирект работают, кроме этих 2? (НЕ строка запроса)

У меня есть список из более чем 100 перенаправлений, почти все из которых работают, за исключением двух. Я использую общий формат для перенаправления htaccess 301:

redirect 301 /shop/category.cfm/wall-decals http://wallcandyarts.com/wall-decals.html

Насколько я могу судить, в этом нет ничего плохого. У меня проблемы с этими двумя:

redirect 301 /shop/product.cfm/chalkboard-wall-panels http://wallcandyarts.com/chalkboard-decals/chalkboard-panels.html
redirect 301 /shop/category.cfm/chalkboard-decals http://wallcandyarts.com/chalkboard-decals.html

Я читал о проблемах со строками запроса, но здесь дело обстоит не так. При составлении этого списка перенаправлений я также увидел, что если новый путь заканчивается на «/», это приведет к тому, что он получит результат, аналогичный тому, что он получает с перенаправлениями выше. Например, нажав http://www.wallcandyarts.com/shop/product.cfm/chalkboard-wall-panels даст вам "смешанный" URL, и я не знаю почему. Есть предположения?

Это мой первый набег на что-то настолько тяжелое с htaccess, которое не требует простого копирования / вставки, так что простите за мое незнание здесь. Надеюсь многому научиться.

Спасибо!

ОБНОВЛЕНИЕ: вот весь htaccess. Много всего было до того, как я добавил 301 директ. Добавленный мной код начинается со строки 181.

http://pastie.org/2371768

Во-первых, вы должны ограничить весь этот код своим файлом httpd.conf, а не htaccess. Скорее угроза безопасности, поскольку люди могут бесплатно скачать его и использовать против вас. Что касается неудачных перенаправлений ... не существуют ли целевые страницы ТОЧНО, как указано в правилах?

Остальные работают на вас? Я пробовал несколько, и каждый, под которым я пробовал /shop забросил мой браузер под wall-decals.html.

http://wallcandyarts.com/shop/product.cfm/seasons-designer-pillows становится http://wallcandyarts.com/wall-decals.html/product.cfm/seasons-designer-pillows.

Виной всему твоя последняя строчка:

redirect 301 /shop http://wallcandyarts.com/wall-decals.html

В Redirect директива основана на сопоставлении префиксов. Как сказано в документации:

Redirect /service http://foo2.bar.com/service
If the client requests http://myserver/service/foo.txt, it will be told to access http://foo2.bar.com/service/foo.txt instead.

Это последнее правило, охватывающее все /shop уничтожает все правила, нацеленные на /shop. Я не совсем уверен, как обрабатывается оценка / приоритет для Redirect, но RedirectMatch может лучше соответствовать вашим потребностям (или, по крайней мере, его следует использовать для этого последнего правила).

RedirectMatch 301 ^/shop/product\.cfm/frames-wall-decals$ http://wallcandyarts.com/wall-decals/frames-decals.html
...
RedirectMatch 301 ^/shop/?$ http://wallcandyarts.com/wall-decals.html