htaccess перенаправляет все запросы из вложенной папки в поддомен

#apache #.htaccess #syntax

#apache #.htaccess #синтаксис

Вопрос:

У меня есть следующая каноническая структура URL (WordPress):

http://mysite.com/2011/10/my-post-name/

Я хочу отправлять все запросы из http://mysite.com/2011/... вниз в одно и то же место на поддомене.

Итак, конкретно это должно быть:

http://mysite.com/2011/10/my-post-name/ —> http://subdomain.mysite.com/2011/10/my-post-name/

Я не уверен, какой правильный синтаксис для этого, кто-нибудь знает?

Комментарии:

1. что subdomain.mysite.com в настоящее время указывает на?

2. subdomain.mysite.com находится на том же сервере и является новым домом для моего блога. В частности, мне нужно отправлять все запросы на » dreamstarstudios.com/2011 …»в» blog.dreamstarstudios.com/2011 …»

Ответ №1:

 RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule (.*) http://subdomain.mysite.com$1 [R=301]
  

Если вам также нужно сопоставить первую часть пути, то используйте

 RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule ^/2011/(.*) http://subdomain.mysite.com/2011/$1 [R=301]
  

Вам следует прочитать документацию mod_rewrite. В первый раз это сбивает с толку, но примерно после 25-го раза это будет иметь довольно хороший смысл и сослужит вам хорошую службу.

Комментарии:

1. Можно ли это изменить, чтобы это выглядело следующим образом: RewriteCond %{HTTP_HOST} ^dreamstarstudios.com/2011/$ RewriteRule (.*) http://v3.dreamstarstudios.com/2011/$1 [R=301] Потому что это то, что я добавил в htaccess, и я не получаю никакого перенаправления…

2. Нет, это не сработает, потому что %{HTTP_HOST} содержит только имя хоста сайта, например dreamstarstudios.com . Другие компоненты пути сопоставляются и изменяются в RewriteRule.

3. лол. Вы правы. Я просто в большей степени интерфейсный разработчик, такие сложные синтаксисы всегда сбивают меня с толку. Вопрос: будет ли это работать только для: dreamstarstudios.com/2010/index.html ИЛИ это также будет работать для: dreamstarstudios.com/2010/10/my-post-name ? Извините, что доставляю вам головную боль, но перезапись по-прежнему не выполняется :/

4. Как и написано выше, это работает только для / 2011, а не / 2010. Если вы хотите написать более общее правило, которое будет выполнять и то, и другое, вам действительно нужно прочитать документацию и узнать о регулярных выражениях. Или вы могли бы написать два правила, по одному для 2010 и 2011 годов.

5. Верно, на данный момент у меня есть только такие корневые URL-адреса за 3 года, так что я не беспокоюсь о том, чтобы использовать для этого регулярное выражение. Единственная цель — перенаправить материалы, заархивированные Googlebot для целей SEO, новые записи будут иметь правильный URL. В любом случае, у меня есть правила перезаписи 2010 и 2011 годов (которые идентичны, за исключением номера) в htaccess, и я ничего не получаю.