Предположительно, правила функционально эквивалентны (хорошо, если предположить, что http://dejanseo.com.au/blog/spam/
должен был быть http://dejanseo.com.au/blog-spam/
, как первый перенаправляет на, а единственный хост, указывающий на это местоположение, - dejanseo.com.au
с или без www
).
В первом примере используются директивы mod_rewrite
, а во втором - некоторые из mod_alias
. Я полагаю, что предпочтительным вариантом является второй вариант для этого конкретного случая, хотя бы не потому, что он немного проще (есть также незначительные дополнительные накладные расходы, связанные с созданием регулярных выражений, используемых mod_rewrite
, но это очень незначительно):
Redirect 301 seo_news_blog_spam.html http://dejanseo.com.au/blog-spam/
Однако я подозреваю, что причина того, что у вас есть первое, заключается в том, что он был создан с использованием CPanel (на основе ненужных выходов в замене, которые появились ранее в вопросе другого пользователя, где было указано, что CPanel был виновником). Они используют опцию mod_rewrite
, поскольку она обеспечивает условную гибкость, которой нет в директиве Redirect
, и я предполагаю, что эта гибкость в некоторой степени отражается в любом интерфейсе, используемом для создания этих правил.
Вы заметите, что существует условие о том, следует ли перенаправлять, основываясь на имени вашего хоста в первом примере, обозначенном RewriteCond
. Это позволяет вам выполнять более мощные перенаправления, основанные не только на пути запроса. Обратите внимание, что mod_rewrite
также допускает внутренние перенаправления, невидимые для пользователя, для которых mod_alias
не предназначен, но это не та емкость, в которой он здесь используется.
В заключение, имена хостов в ваших операторах RewriteCond
должны быть технически исключены из точек, так как символ .
имеет особое значение в регулярных выражениях. Вы также можете объединить их, изменить их на прямое сравнение строк или полностью удалить их (так как я думаю, что они здесь не делают ничего полезного).