web-dev-qa-db-fra.com

ReWriteRules et WordPress multi-sites avec sous-répertoires

Je n'arrive pas toujours à installer ReWriteRules et les structures d'URL pour un blog Wordpress 3.4.2 (la version la plus récente de cet article) avec le multisite activé.

www.ourdomain.com/ est la page d'accueil d'un site de commerce électronique.

Nous avons également www.ourdomain.com/example-category/ et www.ourdomain.com/example-product/

En tant que notre structure de catégorie et de produit URL. Tout cela fonctionne.

J'ai installé les fichiers wordpress dans le dossier physique/var/www/ourdomain/wordpress. À l'heure actuelle, www.ourdomain.com/wordpress/ affiche le blog par défaut. www.ourdomain.com/wordpress/blog1 est le premier blog et www.ourdomain.com/wordpress/blog2 est le deuxième.

J'ai atteint ce point en ajoutant

ReWriteRule ^/wordpress - [L,NC]

à notre fichier vhost (.htacess est activé).

Notre intention est que les demandes directes (des utilisateurs) de www.ourdomain.com/wordpress(/*) à rediriger vers la page d'accueil www.ourdomain.com/ étant donné que le dossier /wordpress sert uniquement à stocker des fichiers et non à servir de blog à l'accès direct.

Les demandes pour www.ourdomain.com/blog/ doivent rediriger en silence vers www.ourdomain.com/wordpress/blog1. Les demandes pour www.ourdomain.com/policies/ doivent rediriger en silence vers www.ourdomain.com/wordpress/blog2.

Alors:

/wordpress/ -> 301 /
/blog/ -> silent /wordpress/blog1
/policies/ -> silent /wordpress/blog2

Cela semble simple en théorie, mais pas si simple en pratique.

J'ai commencé avec:

ReWriteRule ^/wordpress - [L,NC]
RewriteRule ^/blog/(.*)$ /wordpress/blog/$1 [L,NC]  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/blog/ /wordpress/blog/index.php [L]

Ce qui aboutit à un 404 sur/blog /. Bien sûr, parce que /wordpress/blog/index.php n'est pas un fichier. Il n'y a pas de dossier blog dans le dossier wordpress. Le fichier que je veux charger est /wordpress/index.php, qui lit l'URL pour déterminer le blog à charger. Mais l'URL a été modifiée, donc cela échoue. J'ai besoin d'un moyen d'appeler /wordpress/index.php à partir de l'URL/blog /, mais assurez-vous que /wordpress/index.php voit la demande comme si l'utilisateur était passé à /wordpress/blog.

Un moyen de passer un faux URI à PHP à partir de modRewrite? Ou un autre moyen d'y parvenir sans installer de séparer les copies de WordPress?

UPDATE:

Étant donné que cela ne semble pas être pris en charge dans la version actuelle, mais que j'ai toujours besoin que cela fonctionne avant que la nouvelle version ne soit publiée, je pense qu'une solution serait d'utiliser quelque chose comme:

RewriteRule ^/blog/ /wordpress/index.php?site=blog [L]

Ensuite, modifiez le fichier WordPress qui lit l'URL et définissez la variable de site en fonction du paramètre GET. Cela fonctionnerait-il? Quel fichier contient le code pour définir le site actuel?

1
Nick

Ce n'est actuellement pas possible pour une configuration multisite. Cela devrait être possible dans WordPress 3.5, qui devrait être publié le mois prochain. Donc, votre seule solution est la suivante: attendez.

Mise à jour du 26 décembre: Ceci est maintenant possible dans WordPress 3.5 sans autre piratage. :)

1
fuxia