#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, и я ничего не получаю.