.htaccess перенаправить горе - не завершает - PullRequest
0 голосов
/ 28 февраля 2012

Итак, на данный момент мой .htaccess выглядит примерно так:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

RewriteCond %{HTTP_HOST} ^colorspace\.am$ [OR]
RewriteCond %{HTTP_HOST} ^www\.colorspace\.am$
RewriteRule ^portfolio\/?(.*)$ "http\:\/\/i\.colorspace\.am\/portfolio$1" [R=301,L]

Я хочу переместить весь контент из моего корневого каталога в поддомен (что я и сделал), но я не хочу, чтобы ссылки не работали. www.colorspace.am/portfolio необходимо перенаправить на i.colorspace.am/portfolio, и все содержащиеся в нем наборы (т. е. / portfolio / YYYYMMDD) также необходимо «скорректировать» на лету (www.colorspace.am/portfolio). / YYYYMMDD -> i.colorspace.am/porfolio/YYYYMMDD

ПРИМЕЧАНИЕ: i.colorspace.am содержит контент 2011 года; ii.colorspace.am будет содержать 2012 год. Это две совершенно разные установки WP со своими собственными соответствующими базами данных. Не уверен, что это актуально, но ..

То, что, похоже, происходит, заключается в том, что / portfolio получает указание перенаправить на i.colorspace.am/portfolio, но по какой-то причине он заканчивается на i.colorspace.am

ЕСЛИ есть способ, которым я могу сделать любое перенаправление www.colorspace.am/folder/sub-folder в i.colorspace.am/folder/sub-folder (подстановочный знак?) .., это было бы удивительно. Но я был бы так же счастлив с единственным полностью работающим перенаправлением в этот момент.

ПРИМЕЧАНИЕ: код перенаправления был сгенерирован моей административной панелью. Я пытался

Redirect /portfolio http://i.colorspace.am/portfolio

Но это привело к ошибке «слишком много перенаправлений».

1 Ответ

0 голосов
/ 28 февраля 2012

После перенаправления с

RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

Правила

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Доступ снова. Вот почему он заканчивается на i.colorspace.am.

Добавить эти 2 правила

RewriteCond %{HTTP_HOST} ^(?:www\.)?i.colorspace\.am$
RewriteRule protfolio -[L]

в порядке, указанном ниже.

также изменить (просто небольшая оптимизация)

RewriteCond %{HTTP_HOST} ^colorspace\.am$ [OR]
RewriteCond %{HTTP_HOST} ^www\.colorspace\.am$
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

до

RewriteCond %{HTTP_HOST} ^(?:www\.)?colorspace\.am$ 
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

и поместите его внутри блока IfModule в том же порядке, который указан ниже.

В вашем .htaccess есть только следующее:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

#add these 2 lines:
RewriteCond %{HTTP_HOST} ^(?:www\.)?i.colorspace\.am$
RewriteRule protfolio -[L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_HOST} ^(?:www\.)?colorspace\.am$ 
RewriteRule ^portfolio\/?(.*)$ http//i.colorspace.am/portfolio$1 [R=301,L]

</IfModule>
# END WordPress
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...