Правило .htaccess для пересылки, только если введен старый URL - PullRequest
0 голосов
/ 13 декабря 2011

Вот хитрый для вас.На моем сервере установлен сайт WordPress в следующем каталоге:

public_html / priestessentrepreneur / dsa / blogdsa

У меня есть divinesparkastrology.com, указывающий на public_html / priestessentrepreneur / dsa

Я указал priestessastrology.com на public_html / priestessentrepreneur / dsa / blogdsa

Итак, в моей (единственной) установке WordPress URL сайта был установлен на http://www.divinesparkastrology.com/blogdsa, но я недавно изменил его на http://www.priestessastrology.com/. Когда вы набираете http://www.divinesparkastrology.com/, вы правильно перенаправляете на новый URL, http://www.priestessastrology.com/. Однако, если вы пытаетесь перейти непосредственно к http://www.divinesparkastrology.com/blogdsa, он говорит, что ничего не найдено.

Я хочу, чтобы http://www.divinesparkastrology.com/blogdsa и все его подпапки и файлы указывали на их новое местоположение в http://www.priestessastrology.com/ (структура каталогов никогда не менялась, изменялся только базовый URL),Как обновить файл .htaccess, чтобы новый URL-адрес по-прежнему работал правильно, но если и только если пользователь ввел старый URL-адрес, он перенаправляется на новый?

Редактировать: вот что в настоящее время находится в моемФайл / dsa .htaccess:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^divinesparkastrology\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.divinesparkastrology\.com$
RewriteRule ^/?$ "http\:\/\/www\.priestessastrology\.com\/" [R=301,L]

А вот что находится в моем файле / dsa / blogdsa .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

Ответы [ 3 ]

0 голосов
/ 13 декабря 2011

Не делайте этого на уровне .htaccess. Сделайте это на уровне httpd.conf с очень простым

NameVirtualHost x.x.x.x
<VirtualHost x.x.x.x>
    ServerName www.divinesparkastrology.com
    ServerAlias divinesparkastrology.com *.divinesparkastrology.com
    RedirectPermanent / http://priestessastrology.com
</VirtualHost>

Таким образом, вы можете выполнять переадресацию без необходимости обмениваться .htaccess с WordPress или с двумя сайтами, имеющими общую структуру. Apache позаботится о перенаправлении всех запросов на новое имя сервера без необходимости загружать / анализировать / переписывать файл .htaccess при каждом попадании.

0 голосов
/ 14 декабря 2011

Добавьте следующее в верхнюю часть файла .htaccess в папке public_html / priestessentrepreneur / dsa / blogdsa .перед любыми существующими правилами.

RewriteEngine On
RewriteBase /

#if request is on the divinesparkastrology domain
RewriteCond %{HTTP_HOST} ^(www\.)?divinesparkastrology\.com [NC]
#and it is for a folder starting with blogdsa
RewriteCond %{REQUEST_URI} ^/(blogdsa.*)$ [NC]
#redirect them to the same folder on the priestressastrology site
RewriteRule .* http://www.priestessastrology.com/%1 [L,R=301]

Редактировать: изменено, чтобы включить только divinesparkastrology без www и, что более важно, поскольку blogdsa является частью обоих сайтов, файл .htaccess должен быть размещен в каталоге blogdsa, а не в dsaреж.

0 голосов
/ 13 декабря 2011

Добавьте следующий RewriteRule в файл WordPress .htaccess:

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

# added line
RewriteRule ^blogdsa/?$ / [R=301,L]
RewriteRule ^blogdsa/(.+)$ /$1 [R=301,L]

RewriteRule . /index.php [L]

Примечание: , что вы никогда не сможете получить доступ к blogdsa странице WordPress с этим правилом.

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