301 вопрос перенаправления? - PullRequest
       5

301 вопрос перенаправления?

0 голосов
/ 11 сентября 2010

Это хороший пример перенаправления страницы на страницу другого домена:

RewriteCond %{HTTP_HOST} ^dejan.com.au$ [OR]
RewriteCond %{HTTP_HOST} ^www.dejan.com.au$
RewriteRule ^seo_news_blog_spam\.html$ "http\:\/\/dejanseo\.com\.au\/blog\-spam\/" [R=301,L]

или старые добрые работы тоже:

301 redirect seo_news_blog_spam.html http://dejanseo.com.au/blog/spam/

и в чем разница?

Ответы [ 2 ]

0 голосов
/ 12 октября 2010

Невероятно, проблема была в том, что синтакс не был корректным, поэтому вместо:

redirect 301 seo_news_blog_spam.html http://dejanseo.com.au/blog/spam/

это должно выглядеть так:

Redirect 301 seo_news_blog_spam.html http://dejanseo.com.au/blog/spam/

Одно, первое большое письмо было источником всех неприятностей, что пустая трата времени: D теперь он работает как положено! Спасибо всем, кто принял участие, проблема решена.

0 голосов
/ 12 сентября 2010

Предположительно, правила функционально эквивалентны (хорошо, если предположить, что 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 должны быть технически исключены из точек, так как символ . имеет особое значение в регулярных выражениях. Вы также можете объединить их, изменить их на прямое сравнение строк или полностью удалить их (так как я думаю, что они здесь не делают ничего полезного).

...