web-dev-qa-db-fra.com

Problème de sous-répertoire Wordpress .htaccess

J'ai eu quelques problèmes avec mon installation Wordpress qui me permettaient d'accéder à des sous-répertoires, en particulier une installation CodeIgniter à l'adresse mydomain.com/codeigniter. Je sais que, techniquement, il devrait fonctionner correctement et reconnaître les dossiers au fur et à mesure de leur création. Cependant, cela ne se produit pas. Je suppose que cela a quelque chose à voir avec un plugin, mais j'ai essayé de les désactiver tous et le problème persiste (me dirige vers la page Wordpress 404).

J'ai cependant trouvé une solution dans l'intervalle. Si je crée un sous-domaine, quelque chose change et tout fonctionne comme il se doit, en accédant au dossier à la fois par le chemin direct et par le nom du sous-domaine.

De l'aide? J'ai essayé toutes sortes de choses amusantes avec mes fichiers .htaccess dans les deux répertoires, mais les modifier ne fait rien.

Mise à jour: Voici le fichier .htaccess Wordpress dans le dossier racine:

DirectoryIndex index.php index.htm index.html
AddHandler application/x-httpd-php52 .php .php5 .php4 .php

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/?codeigniter/
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Et le fichier .htaccess CodeIgniter dans le sous-répertoire/codeigniter /.

DirectoryIndex index.php index.htm index.html
AddHandler application/x-httpd-php52 .php .php5 .php4 .php

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /codeigniter
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
</IfModule>
4
Jeff Wain

Même si les fichiers et les répertoires statiques fonctionnent avec une installation wordpress mod_rewrite à la racine du serveur, vous devrez peut-être exclure votre sous-répertoire CodeIgniter de cette gamme mod_rewrite.

Vous pouvez le faire en plaçant un fichier .htaccess supplémentaire dans le répertoire CodeIgniter et en désactivant mod_rewrite:

<IfModule mod_rewrite.c> 
RewriteEngine off
</IfModule>

Connexes: Apache - Désactive mod_rewrite pour le sous-répertoire

Cela fait normalement le travail pour moi. Mais cela peut être moins trivial si le sous-répertoire nécessite une configuration mod_rewrite (comme certains PHP Frameworks).

Pour comprendre le fonctionnement de la configuration Apache, veuillez consulter Fichiers de configuration (Manuel Apache) et Directive AllowOverride (Manuel Apache) .

3
hakre