web-dev-qa-db-fra.com

problème de préfixe wordpress wp-json

J'utilise Wordpress 4.9+ qui, je crois, est activé avec REST api par défaut. Mes permaliens sont définis sur Month and Name Et j'utilise le thème Foxhound React pour mon site.

Maintenant, mon api de repos devrait être disponible dans

http://example.com/index.php/wp-json/wp/v2/posts

Mais sa disponible dans

http://example.com/index.php/wp-json/wp/v2/posts

C’est la raison pour laquelle mon thème reçoit une erreur 404 lorsqu’il tente d’obtenir des données de l’API.

 image error 

Maintenant, ma question est de savoir comment rendre mon REST disponible sans le préfixe /index.php

J'ai déployé manuellement tout dans aws ubuntu micro avec un serveur Lamp. Les fichiers Wordpress sont dans le dossier racine (/var/www/html/)

J'ai aussi essayé le module mod_rewrite en procédant comme suit

a2enmod rewrite
Sudo service Apache2 restart

Et ceci est mon fichier .htaccess

# 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
1
Faysal Ahmed

Vous essayez peut-être d’obtenir votre URL telle que http://example.com/...../posts au lieu de http://example.com/index.php/...../posts

C'est le problème de votre serveur. Votre serveur ne le prend pas en charge car vous pouvez utiliser le serveur Lightpd.

Vous pouvez modifier rewrite_once dans lightpd.conf s'il s'agit du serveur lightpd. De plus, si votre serveur supporte htaccess, vous pouvez ajouter cette ligne pour réécrire l'URL.

"^(.+)/?$" => "/index.php/$1"

Ceci est pour lightpd et cette expression rationnelle que vous pouvez utiliser pour htaccess.

Mise à jour: Comme vous avez dit que votre serveur supporte htaccess, utilisez ce code dans votre htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php
RewriteRule ^index.php$ http://example.com/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
1
AA Shakil

Vous devez définir la structure de lien permanent de votre site Web.

  1. Aller à Paramètres> Permalien .
  2. Supprimer index.php de la Structure personnalisée .
  3. Cliquez sur Save Changes.

Il régénère votre structure permalien. Et vous pourrez accéder aux articles avec http://example.com/index.php/wp-json/wp/v2/posts

Mis à jour:

.htaccess code comme ci-dessous:

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

# END WordPress

Remarque: Modifiez dev.fresh avec votre propre domaine.

1
maheshwaghmare