web-dev-qa-db-fra.com

htaccess désactive les règles de réécriture de Wordpress pour le dossier et son contenu

J'ai une autre application PHP dans un dossier nommé app dans mon installation Wordpress et je dois désactiver toutes les règles de réécriture Wordpress pour ce dossier et son contenu. Ainsi, lorsque je vais sur www.domain.com/app, je reçois ma page d’application, au lieu de la page standard Wordpress 404.

Je sais que c’est une règle de base pour la réécriture d’Apache. J’ai cherché cela, j’ai essayé certaines choses et je n’ai pas bien fonctionné.

Presque oublié, je dois le faire uniquement en éditant le fichier htaccess de Wordpress. Et l'application a son propre fichier htaccess.

Merci.

EDIT: contenu htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

EDIT: Application htaccess

DirectoryIndex index.php
<FilesMatch "\.(php|inc)$">
Order allow,deny
deny from all
</FilesMatch>
<FilesMatch "(index.php|download.php)$">
Order allow,deny
allow from all
</FilesMatch>

Ces règles ne font pas grand chose, elles refusent fondamentalement l'accès à tous les types de fichiers PHP et INC, à l'exception de index.php et download.php. Quels sont ceux auxquels l'utilisateur doit accéder, les autres sont des classes utilisées en interne par PHP.

EDIT 3: Résolution:

En fin de compte, Wordpress htaccess ou l’application ne posait pas problème, après avoir signalé les erreurs sur le serveur d’hébergement distant, PHP avait signalé un fichier corrompu; une fois remplacés, tous commençaient à bien fonctionner. Merci à Wietse Venema pour cette suggestion.

5
Fábio Antunes

Le fichier .htaccess par défaut supportera déjà le comportement souhaité;

# 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

La magie est dans les lignes qui commencent parRewriteCond. Ils demandent à Apache d'appliquer la règle RewriteRule . /index.php [L] (ce qui signifie "toute URL ira à index.php"), uniquement lorsque l'URL n'est pas un fichier existant !-f ou un répertoire existant !-d.

Donc, cela devrait fonctionner par défaut. Les règles de réécriture Wordpress ne s'appliquent pas lorsque vous essayez de visiter un fichier déjà existant.

5
Wietse Venema