J'ai la structure suivante
www/
.htaccess
/website1
/website2
/uploads/foo.pdf
/websiteWP
.htaccess
.htacces
dans la racine (www/.htaccess)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_Host} ^(www.)?foo.com$
RewriteCond %{REQUEST_URI} !^/website1/
RewriteCond %{REQUEST_URI} !^/website2/
RewriteCond %{REQUEST_URI} !^/uploads/
RewriteCond %{REQUEST_URI} !^/websiteWP/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /websiteWP/$1
RewriteCond %{HTTP_Host} ^(www.)?foo.com$
RewriteRule ^(/)?$ websiteWP/index.php [L]
</IfModule>
.htacces
dans l'installation wordpress (www/websiteWP/.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>
Dans Wordpress, en cliquant sur le lien https://www.foo.com/uploads/some-pdf.pdf , le chargement sera infini, essayer de charger le contenu (cette réaction est due au thème, je suppose que d'autres peuvent avoir un 404), ou parfois combiner la moitié wordpress avec la moitié page "intégrée" à distance.
Mais aller au pdf de l'extérieur du site (coller dans la boîte de recherche) fonctionnera.
Remarque:
URL Wordpress: https://www.foo.com/websiteWP
URL du site Web: https://www.foo.com
Impossible de trouver l'échec du .htaccess
.
Déjà vérifié tous les threads disponibles dans stackoverflow et wordpress stackexchange.
Les fichiers .htaccess
que vous avez publiés ne permettent pas de comprendre pourquoi vous ne pouvez pas accéder à des fichiers/dossiers en dehors de votre installation WordPress (dans le sous-répertoire /websiteWP
). En fait, vous ne devriez pas avoir besoin d'ajouter des exceptions spécifiques pour accéder aux fichiers physiques, car ces directives ne devraient pas s'appliquer aux fichiers physiques.
Cependant, vos fichiers .htaccess
sont mal configurés ...
Si l'installation WordPress se trouve dans le répertoire /websiteWP
, le fichier /websiteWP/.htaccess
(dans le chemin de votre installation WordPress) est incorrect, car il achemine toutes les demandes vers /index.php
- c'est le fichier index.php
situé à la racine du document (le répertoire parent, je suppose). , pas le contrôleur frontal WordPress qui devrait être dans le même répertoire, c.-à-d. /websiteWP/index.php
).
Cependant, je suppose que /index.php
(dans la racine du document) n’existe pas (sinon votre site WordPress ne fonctionnera pas). Les directives .htaccess
dans le fichier racine .htaccess
réécrivent ensuite la demande dans le /websiteWP/index.php
contrôleur frontal WordPress! C'est un travail supplémentaire et inutile.
Vous devriez changer le fichier /websiteWP/.htaccess
pour lire:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
Remarque J'ai supprimé la directive RewriteBase
et le préfixe slash de la substitution RewriteRule
, en remplaçant /index.php
(relatif à la racine) par index.php
(relatif).
Ensuite, le fichier racine .htaccess
n'est pas requis du tout.