2010-09-11 3 views
0

Это qood пример перенаправления страницы на другую страницу домена:301 вопрос о переадресации?

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/ 

и Что разница?

ответ

0

Unbeliavable, проблема заключалась в том, что synthax не правильно, поэтому вместо того, чтобы:

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

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

+0

Я забыл включить самую важную вещь, и что файл seo_news_blog_spam.html необходимо перенаправить на другой домен. Описанная выше технология работает с перенаправлением на другой домен вместо того, чтобы просто перенаправлять на локальные URL-адреса? – dzhi

+0

@purpler - Да. Для «Redirect» и «RewriteRule» вы можете поместить полный URL-адрес в качестве замены для перенаправления на другой домен. Обратите внимание, что если домены указывают на один и тот же сервер и корневой каталог документа, вам необходимо использовать версию RewriteRule + RewriteCond, поскольку проверка хоста требуется в этом сценарии, чтобы избежать цикла перенаправления. –

Смежные вопросы