2017-03-29 4 views
0

J'ai un site sur Phalcon et tout fonctionne bien (j'ai SSL) mais maintenant je voudrais avoir un accès au forum (https://www.example.com/forum/) mais j'ai un problème avec la configuration .htaccess.Apache .htaccess, sous-dossier

Phalcon ont la configuration spécifique:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{HTTP_HOST} !^www.example.com [NC] 
    RewriteRule ^(.*)$ http://www.example.com%{REQUEST_URI} [R=301,L] 
    RewriteCond %{HTTPS} !=on 
    RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 
    RewriteRule ^$ public/ [L] 
    RewriteRule (.*) public/$1 [L] 
</IfModule> 

Quelle est la configuration correcte pour le domaine de la maison et /forum/ dossier?

Répondre

1
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC] 
RewriteRule^"http://www.example.com%{REQUEST_URI}" [R=301,L] 
RewriteCond %{HTTPS} !=on 
RewriteRule^"https://%{SERVER_NAME}%{REQUEST_URI}" [R,L] 
RewriteCond %{REQUEST_URI} !^/forum/ 
RewriteRule ^.*$ public/$0 [L] 
+0

Merci, cela fonctionne :) – vostronp

+0

Great! Vous voudrez peut-être accepter la réponse de Deadooshka :) –

+0

Hey @Deadooshka, il est mal vu de poster des réponses de code seulement. Pouvez-vous ajouter une petite explication de ce que vous avez fait/de ce qui se passe? –

0

Le fichier .htaccess racine de Phalcon redirige tout le trafic vers le dossier/public. Ce que vous devez faire est d'ajouter une condition supplémentaire à votre règle de réécriture finale. Voici la partie de mon fichier .htaccess:

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    # Force www 
    RewriteCond %{HTTP_HOST} !^$ 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteCond %{HTTPS}s ^on(s)| 
    RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

    # Remove trailing slash 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} (.+)/$ 
    RewriteRule^%1 [R=301,L] 

    # Forward to public/ 
    RewriteRule ^(forum)($|/) - [L] 
    RewriteRule ^(.*)$ public/$1 [L] 
</IfModule> 

Ce RewriteRule ^(forum)($|/) - [L] est la condition importante que vous devez ajouter avant RewriteRule ^.*$ public/$0 [L]

vous pouvez également ajouter autant que les règles que vous souhaitez autoriser plusieurs dossiers.

RewriteRule ^(forum)($|/) - [L] 
RewriteRule ^(some-other-folder)($|/) - [L] 
...