Какое правильное / лучшее правило в файле .htaccess? - PullRequest
1 голос
/ 17 октября 2011

Я хочу удалить вики-раздел со своего веб-сайта, который был проиндексирован Google, поэтому я не хочу его удалять, и в результате при удалении страниц будет загружено 404. Я хочу написать правило, которое будет перенаправлять все запрашивающие URL-адреса страницы в вики на другую страницу. Поэтому я хочу перенаправить любой URL-адрес, содержащий имя папки / wiki /, на другую страницу. Я немного растерялся, если это RewriteRule:

RewriteRule ^wiki/* http://www.mydomain.com [R=301,L]

или RedirectMatch:

RedirectMatch 301 /wiki/(.*) http://www.mydomain.com

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

Спасибо.

1 Ответ

0 голосов
/ 17 октября 2011

Они оба сделают одну и ту же работу. Но эта идея не подходит с точки зрения SEO - для SEO будет лучше вернуть код 410 (410 Gone - страница была здесь, но больше не доступна).

В любом случае: RedirectMatch подход рекомендуется - он использует немного меньше ресурсов процессора.С другой стороны, RewriteRule более гибок.

Например: у вас есть URL вроде example.com/wiki/somepage?say=hello.Если вы используете RedirectMatch, тогда новый URL будет example.com/?say=hello - как вы можете видеть, строка запроса была скопирована.С RewriteRule вы можете легко и приятно удалить его, поэтому новый URL будет просто example.com/.

Вот правила (слегка оптимизированы):

RewriteRule ^wiki/ http://%{HTTP_HOST}/? [R=301,L]

ИЛИ

RedirectMatch 301 ^/wiki/.*$ http://www.mydomain.com/?

? в обоих правилах - для удаления существующей строки запроса.С RewriteRule его не будет, когда происходит перенаправление (в этом отношении mod_rewrite весьма умен), в то время как RedirectMatch очень прямолинеен и будет держать его (что может выглядеть немного странно, если вы ищете действительно хорошие / правильные URL)

...