2016-04-20 2 views
2

настоящее время у меня этот код в моем htaccess файл, хранящийся в корневом каталоге:Htaccess не перепишет поддоменов

RewriteEngine On 
DirectoryIndex index.php 

RewriteCond %{HTTP_HOST} admin.mydom.com$ 
RewriteRule ^(.*)$ /admin/system/$1 [L] 

RewriteCond %{HTTP_HOST} ^([^/.]+)\.mydom\.com$ 
RewriteRule ^(.+)$ /subdomains/%1/ [L] 

RewriteCond %{HTTP_HOST} !mydom.com$ [NC] 
RewriteRule ^(.*)$ http://www.mydom.com/$1 [L,R=301] 

# 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 

Файл должен обеспечить это делается на сайте следующее:

admin. подобласть сопоставлен /admin/system

карта всех субдоменов /subdomains/{subdomain}

перенаправлять любой домен О.Т. ее чем mydom.com к mydom.com

, а затем стандартной WordPress HTAccess

Его работает отлично кроме подобласти части, все субдомены перенаправлены обратно в основной домен (mydom.com)

ответ

1

Имейте это так:

DirectoryIndex index.php 

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ [NC] 
RewriteRule^http://www.mydom.com%{REQUEST_URI} [L,R=301,NE] 

# redirect sub.dom2.com to sub.mydom.com 
RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.(?!mydom\.)[^.]+\. [NC] 
RewriteRule^http://%1.mydom.com%{REQUEST_URI} [L,NE,R=302] 

RewriteCond %{HTTP_HOST} admin\.mydom\.com$ [NC] 
RewriteRule !^admin/system/ admin/system%{REQUEST_URI} [L,NC] 

RewriteCond %{HTTP_HOST} ^(?!www\.)([^.]+)\.mydom\.com$ [NC] 
RewriteRule !^subdomains/ subdomains/%1%{REQUEST_URI} [L,NC] 

RewriteRule ^(subdomains/|admin/|index\.php$) - [L,NC] 

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

, который, кажется, работает отдельно от основного домена (с и без www.), его пытается перейти в '/ subdomains/www' – charlie

+0

ah yes thats working теперь - как насчет добавления, если вы посещаете 'sub.dom2. com', он перейдет на 'sub.dom.com', так что все поддомены будут перенаправлены в основной домен – charlie

+0

ok, поэтому есть несколько доменов, которые мы указываем на этот сервер. вот почему все, что он перенаправил на «www.dom.com», если это еще не URL. если кто-то посещает 'dom2.com' перенаправит их на 'dom.com', но как я могу добавить то же самое для поддоменов - если кто-то посещает' sub.dom2.com', он будет перенаправлен на 'www.dom.com', но может ли он перенаправить на тот же субдомен? – charlie

2

Вы можете попробовать изменить начало:

RewriteEngine On 
DirectoryIndex index.php 

RewriteCond %{HTTP_HOST} admin\.mydom\.com$ [NC] 
RewriteRule !^admin/system/ /admin/system%{REQUEST_URI} [L] 

RewriteCond %{HTTP_HOST} !^www\.mydom\.com$ [NC] 
RewriteCond %{HTTP_HOST} ^([^/.]+)\.mydom\.com$ [NC] 
RewriteRule !^subdomains/%1 /subdomains/%1%{REQUEST_URI} [L] 

RewriteCond %{HTTP_HOST} !mydom.com$ [NC] 
RewriteRule ^(.*)$ http://www.mydom.com/$1 [L,R=301] 

это позволяет избежать многочисленных переделок
Но я не знаю, был ли это источник вашей проблемы

+0

если я посетить WWW. что показывает внутреннюю ошибку сервера – charlie

+0

Я отредактировал мой код для этого – Croises

+0

yep, остановил ошибку, но теперь, когда я посещаю субдомен, он показывает мне то же самое, что и основной домен, а не содержимое в каталоге поддоменов – charlie

0

Вы можете использовать следующие правила: кэш

RewriteEngine On 
DirectoryIndex index.php 

RewriteCond %{HTTP_HOST} ^admin\.mydom.com$ 
RewriteRule ^((?!admin/system).*)$ /admin/system/$1 [L] 

RewriteCond %{HTTP_HOST} ^((?!www\.).+)\.mydom\.com$ 
RewriteRule ^(.+)$ /subdomains/%1/ [L] 

RewriteCond %{HTTP_HOST} !mydom.com$ [NC] 
RewriteRule ^(.*)$ http://www.mydom.com/$1 [L,R=301] 

Clear браузера перед тестированием этого.

+0

очищенный кеш, но все еще ошибка внутреннего сервера :( – charlie

+0

@Charlie Есть ли у вас какие-либо другие правила в htacces? – starkeen

+0

проверить OP для других правил – charlie

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