Они оба сделают одну и ту же работу. Но эта идея не подходит с точки зрения 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)