Почему перенаправление htaccess отменяется? - PullRequest
1 голос
/ 06 сентября 2011

У меня есть:

Redirect 301 /blog/?p=1 <a href="http://www.new-site.com/blog/2000/10/myslug/" rel="nofollow">http://www.new-site.com/blog/2000/10/myslug/</a>

, который работает нормально, если не следовать:

RedirectMatch 301 ^/blog(/)?(.*)$ http://www.new-site.com/blog/$2

Я перепробовал все виды версий, включаяRewriteRule, но ничего не сработало.Как мне сохранить первое конкретное правило и написать правило «все остальное сохраняет свой запрос и строку запроса»?

Спасибо

1 Ответ

0 голосов
/ 06 сентября 2011

Хорошо, предполагая, что это только две строки, я вижу следующее:

Redirect 301 /blog/?p=1 <a href="http://www.new-site.com/blog/2000/10/myslug/" rel="nofollow">http://www.new-site.com/blog/2000/10/myslug/</a>

RedirectMatch 301 ^/blog(/)?(.*)$ <a href="http://www.new-site.com/blog/" rel="nofollow">http://www.new-site.com/blog/</a>$2

В основном это одно и то жето есть при совпадении перенаправить все запросы блога на новый сайт навсегда.

Со вторым вы говорите совпадение с начала строки /blog с возможной косой чертой, которую вы будетезахват и, возможно, больше информации, которую вы также захватите, а затем просто поместите всю эту информацию в blog/extra-picked-up-info.Это может быть частью проблемы, или вы можете обойти ее, переупорядочив директивы и посмотрев, получает ли нижняя директива приоритет.

RedirectMatch 301 /blog(?:/\?)?(.*)?$ http://www.new-site.com/blog/$1
Redirect 301 /blog/?p=1 http://www.new-site.com/blog/2000/10/myslug/

В противном случае вам придется пересмотретьваши URI и найдите что-то более уникальное.

...