2014-10-16 4 views
1

У меня есть несколько доменов, указывающих на один и тот же сервер.Проблемы с Htaccess

Вместо того, чтобы все они указывали на корневой каталог сервера, у меня есть все, указывающие на их собственный каталог на сервере.

Я использую этот HTAccess код:

<IfModule mod_rewrite.c> 

    RewriteEngine On 

    Options +FollowSymLinks 

    RewriteCond %{HTTP_HOST} ^(www\.)?mycoolwebsite\.(com|org)$ [NC] 
    RewriteCond %{REQUEST_URI} !^/cooldir(/.*)?$ [NC] 
    RewriteRule ^(.*)$   /cooldir/$1 [QSA,L] 

    RewriteCond %{HTTP_HOST} ^(www\.)?mylolwebsite\.(com|org)$ [NC] 
    RewriteCond %{REQUEST_URI} !^/loldir(/.*)?$ [NC] 
    RewriteRule ^(.*)$   /loldir/$1 [QSA,L] 

</IfModule> 

Мой сервер настроен так:

Так, exmaple:

Моя проблема, иногда URL показывает корневой каталог:

Как я могу это исправить?

Примечание: У меня нет доступа к VirtualHosts. Вот почему я использую mod_rewrite.

ответ

1

Эта проблема возникает из-за mod_dir Модуль Apache, который добавляет конечную косую черту перед каталогами после mod_rewrite правил.

Один из способов исправить это с помощью кода, как это (с использованием DirectorySlash Off на вершине и добавление слэш позже):

<IfModule mod_rewrite.c> 

    RewriteEngine On 

    Options +FollowSymLinks 
    DirectorySlash Off 

    RewriteCond %{HTTP_HOST} ^(www\.)?mycoolwebsite\.(com|org)$ [NC] 
    RewriteRule ^((?!cooldir/).*)$ cooldir/$1 [L,NC] 

    RewriteCond %{HTTP_HOST} ^(www\.)?mylolwebsite\.(com|org)$ [NC] 
    RewriteRule ^((?!loldir/).*)$ loldir/$1 [L,NC] 

    # add trailing slash in front of directories internally 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule [^/]$ %{REQUEST_URI}/ [L] 

</IfModule> 
+1

Ничего себе у гений !!!!!!!!!!! !!!!!!! СПАСИБО ТЕБЕ БОЛЬШОЕ!!!!!!!!!!! – user2217162

+0

Добро пожаловать, рад, что это сработало для вас. – anubhava

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