Предположительно, правила функционально эквивалентны (хорошо, если предположить, что 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
должны иметь техническую информацию, так как символ .
имеет особое значение в регулярных выражениях. Вы также можете объединить их, изменить их на direct string comparisons или удалить их вообще (так как я думаю, что они не делают ничего полезного здесь).
Я забыл включить самую важную вещь, и что файл seo_news_blog_spam.html необходимо перенаправить на другой домен. Описанная выше технология работает с перенаправлением на другой домен вместо того, чтобы просто перенаправлять на локальные URL-адреса? – dzhi
@purpler - Да. Для «Redirect» и «RewriteRule» вы можете поместить полный URL-адрес в качестве замены для перенаправления на другой домен. Обратите внимание, что если домены указывают на один и тот же сервер и корневой каталог документа, вам необходимо использовать версию RewriteRule + RewriteCond, поскольку проверка хоста требуется в этом сценарии, чтобы избежать цикла перенаправления. –