Правила поддомена Htaccess - PullRequest
       3

Правила поддомена Htaccess

3 голосов
/ 16 августа 2010

Я использую htaccess с набором правил для управления различными страницами моего сайта.

  1. Если пользователь заходит на мой основной сайт (domain.com), без использования www он 301 перенаправляет на www.domain.com (для целей SEO)
  2. Я использую поддомены с подстановочными знаками, поэтому, если пользователь заходит на subdomain.domain.com, он будет просматривать определенный файл PHP, который решит, будет ли контент для них.*

    Моя проблема в том, что я хотел бы расширить мои настройки, чтобы иметь возможность использовать те же имена URL.В качестве примера, если я зайду на subdomain.domain.com/feed, я увижу файл pages / public_news_feed.php из правила основного домена, поскольку он разделяет правило "/ feed".Я действительно хотел, чтобы меня обслужили pages / public_subdomain_blog_feed.php!

    Как я могу настроить определенные правила для domain.com и subdomain.domain.com?

    Заранее спасибо и хорошего дня!

    #AuthName "Restricted Area" 
    #AuthType Basic
    #AuthUserFile /var/www/user/data/www/domain.com/.htpasswd 
    #require valid-user
    
    Options +FollowSymLinks
    RewriteEngine on
    
    #force domain setup to use www
    RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
    
    #redirect subdomains to controller
    RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
    RewriteRule ^$ pages/public_subdomain_blog.php [L,QSA]
    
    RewriteCond %{REQUEST_URI} !-f
    RewriteRule ^(indsend-nyhed)$           pages/public_submit_news.php [L]
    RewriteRule ^(modeblogs)$               pages/public_blogs.php [L]
    RewriteRule ^(nyheder)$             pages/public_news.php [L]
    RewriteRule ^(feed)$                    pages/public_news_feed.php [L]
    RewriteRule ^(nyheder)/([0-9]*)/(.*)$       pages/public_news_single.php?n_id=$2 [L]
    RewriteRule ^(kontrolpanel)$                pages/private_account.php [L,QSA]
    RewriteRule ^(kontrolpanel)/(logud)$            pages/private_logout.php [L]
    
    
    ## THESE RULES SHOULD ONLY BE SET IF THE USERS IS ON A SUBDOMAIN
    RewriteRule ^([0-9]*)/(.*)$         pages/public_subdomain_blog_article.php?p_id=$1 [L]
    RewriteRule ^(kategori)/([0-9]*)$       pages/public_subdomain_blog.php?c_id=$2 [L]
    RewriteRule ^(arkiv)/([0-9]*)$      pages/public_subdomain_blog.php?a_id=$2 [L]
    RewriteRule ^(feed)$                pages/public_subdomain_blog_feed.php [L]
    

1 Ответ

2 голосов
/ 16 августа 2010

Ну, вы уже знаете, как определить, находится ли пользователь на поддомене, поскольку вы уже делаете это для своего контроллера:

RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^$ pages/public_subdomain_blog.php [L,QSA]

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

## THESE RULES SHOULD ONLY BE SET IF THE USERS IS ON A SUBDOMAIN
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^([0-9]*)/(.*)$       pages/public_subdomain_blog_article.php?p_id=$1 [L]
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(kategori)/([0-9]*)$ pages/public_subdomain_blog.php?c_id=$2 [L]
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(arkiv)/([0-9]*)$    pages/public_subdomain_blog.php?a_id=$2 [L]
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^(feed)$              pages/public_subdomain_blog_feed.php [L]

RewriteCond %{REQUEST_URI} !-f
RewriteRule ^(indsend-nyhed)$         pages/public_submit_news.php [L]
RewriteRule ^(modeblogs)$             pages/public_blogs.php [L]
RewriteRule ^(nyheder)$               pages/public_news.php [L]
RewriteRule ^(feed)$                  pages/public_news_feed.php [L]
RewriteRule ^(nyheder)/([0-9]*)/(.*)$ pages/public_news_single.php?n_id=$2 [L]
RewriteRule ^(kontrolpanel)$          pages/private_account.php [L,QSA]
RewriteRule ^(kontrolpanel)/(logud)$  pages/private_logout.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...