web-dev-qa-db-fra.com

Pourquoi les permaliens fonctionnent avec /index.php/%postname% mais pas seulement avec% postname%?

J'ai un problème avec les permaliens Wordpress. Je change les permaliens en jolis permaliens mais je reçois juste des 404 pour les pages maintenant. La chose étrange est que lorsque j'utilise /index.php/%postname%, les liens de page fonctionnent correctement, mais je dois me débarrasser de la partie index.php.

J'ai lu des informations sur les modifications à apporter au fichier httpd.conf, mais je ne trouve le fichier nulle part. Le fichier htaccess est correct dans la mesure où je peux le trouver, il est en dessous

# 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

D'autres idées?

Merci Emma

3
emmahiggy

J'avais tout le code correct dans le fichier .htaccess, mais il a également été complètement écrasé dans le fichier /etc/Apache2/Apache2.conf par défaut d'Ubuntu. Modification de l'entrée pour / et /var/www de AllowOverride None en AllowOverride All, redémarrage d'Apache et tout fonctionne correctement.

8
Drew Reis

Je suppose que mod_rewrite n'est pas activé. Selon le serveur que vous utilisez, activez mod_rewrite.

Ensuite, si vous êtes sous Linux, éditez manuellement /etc/Apache2/sites-enabled/000-default et remplacez AllowOverride par None par All (ou par le répertoire de votre site).

Ici , aux points 3 et 4 devraient être des solutions pour Windows.

4
iulia

Je lutte contre ce problème depuis un moment et je l’ai résolu aujourd’hui. J'ai découvert que mon mod_rewrite n'était pas activé pendant tout ce temps. J'ai trouvé les informations sur ce lien très utiles. Il explique tout comment vérifier si le mod_rewrite est activé et, si ce n’est le cas, comment l’activer. J'espère que cette information est utile à quiconque découvre le WP et qui a du mal à définir de jolis permaliens.

1
Rohit Sharma

Je travaille sur un problème similaire depuis hier et j'ai finalement trouvé ma solution.

1) Assurez-vous que votre .htaccess a la permission de 666

2) Activer le mod_rewrite:

Sudo a2enmod réécrire

3) redémarrez Apache:

Sudo systemctl redémarrer Apache2

4) AllowOverride All pour le répertoire public sur /etc/Apache2/Apache2.conf

<Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

5) Redémarrez Apache:

Sudo systemctl redémarrer Apache2

6) Allez dans le tableau de bord Wordpress et modifiez les paramètres de permalien (si vous êtes sur postname, passez en clair, ou vice versa). Voir le site pour vérifier.

7) Accédez à nouveau au tableau de bord et modifiez les paramètres de permalien selon vos paramètres souhaités.

8) Rétablir les paramètres .htaccess à 644

Cela a fonctionné pour moi.

1
ktiwari

Utilisez-vous Names.co.uk en tant qu'hôte par hasard?

Je viens d'avoir le même problème que vous et après quelques heures de recherche sur Google, j'ai découvert qu'ils utilisaient un Zeusserveur - pas Apache- et il ne prend pas en charge la fonction Mod_ReWriteCela semble expliquer les symptômes déroutants (je n’avais pas de fichier .htaccess, mais aucune erreur n’a été signalée par Wordpress chaque fois que j’ai modifié mes préférences en permalien.)

Ils ont une solution de contournement pour Zeus, détaillée ici:

http://www.names.co.uk/support/hosting/linux_hosting/1119-wordpress_rewrite_script.html

Je me rends compte que cela se produit quelques mois après votre message original et que vous l'avez probablement déjà résolu à ce jour - mais pour tous ceux qui le trouveront à l'avenir, il serait judicieux de vérifier si votre hôte utilise Zeus ou un autre serveur non Apache.

Mise à jour: S'il vous plaît voir le code que j'ai posté ici sur une question similaire

1
Mike Cooter

Essayez de remplacer le code .htaccess par ceci:

# -------------------------------------------------------------------------
# Rewrite Engine options
# -------------------------------------------------------------------------

RewriteEngine On
RewriteCompatibility2 On
RepeatLimit 200
RewriteBase
RewriteRule ^/index.php$ / [NC,P,R=301]
RewriteCond %{REQUEST_URI} !/wp-admin
RewriteRule ^/(.*)/$ /index.php/$1 [NC]

# Redirect 'www.yourblogsite.com/anything/anything/index.php'
# to 'www.yourblogsite.com/anything/anything/'

RewriteRule ^/(.*)/index.php$ /$1/ [NC,P,R=301]

# -------------------------------------------------------------------------
# END REWRITES
# -------------------------------------------------------------------------

J'avais toujours les informations d'identification de connexion à un client pour lequel je devais résoudre ce problème. C'est ce que j'ai utilisé pour lui. Il s’agit d’un serveur IIS. Je ne sais pas si cela compte, mais vous pouvez l’essayer. Bonne chance, JJ

0
Jeremy Jared

Je sais qu'il est trop tard pour répondre maintenant, mais si vous cherchez toujours cela; voici un moyen rapide pour cela:

Résolu-Comment faire pour supprimer Index.php à partir de WordPress URL sur IIS7?

0
ansh

Je pense que votre hôte utilise ISS. ISS utilise "URL Rewrite" et non "mod_rewrite", jetez donc un coup d'œil au Codex .

Les "jolis" permaliens nécessitent généralement mod_rewrite et IIS (commun sur les serveurs Windows) ne prend pas en charge mod_rewrite. (Si vous utilisez Apache 2.0.54, sous Windows, mod_rewrite peut fonctionner s'il est activé dans Apache\conf\httpd.conf.)

0
ewroman

Vous devez faire Sudo a2enmod rewrite pour activer la réécriture de module

0
Kazbek Kadalashvili

J'avais ce problème sur Mac OSX et ce qui suit était très utile. Il semble que, par défaut, les Mac ne soient pas prêts .htaccess et Apache ignorera le fichier jusqu'à ce que certains fichiers (spécifiés sur les liens ci-dessous) soient modifiés:

http://wordpress.org/support/topic/getting-pretty-permalinks-working-on-a-mac-105-server

http://clagnut.com/blog/350/

J'espère que cela pourra aider!

0
July

C’est pour le serveur Apache: Bonjour d’abord, vérifiez votre hôte virtuel si vous utilisez le serveur par défaut, vérifiez le répertoire racine de wordpress

  <Directory ROOT_DIR_FOR_WORDPRESS>
            php_admin_flag engine on
            AllowOverride All
            Order allow,deny
            allow from all
            RewriteEngine On
            RewriteOptions Inherit
            Require all granted
    </Directory>

vérifiez que votre fichier .htaccess dans WordPress racine est autorisé à lire, écrire (666) et contient

# 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

Activer la réécriture du mod (réécriture Sudo a2enmod - pour les utilisateurs de Linux)

Maintenant, mettez à jour la structure personnalisée permalien: /% postname% /

enregistrer et vérifier les erreurs Maintenant, il devrait fonctionner

La plupart du temps, votre problème .htaccess est remplacé par les règles de votre hôte virtuel.

0
User123456

Essayez de régler le paramètre htaccess sur 777, puis entrez et mettez à jour les paramètres de permalien vers ce que vous voulez, puis, si cela fonctionne, revenez en arrière et redéfinissez-le sur 644

0
derek

Après avoir ajouté mon contenu, j'ai trouvé un article suggérant de supprimer le fichier .htaccess, puis d'aller à Paramètres/permaliens et supprimer le fichier index.php. L'article disait que WorPress donnerait une erreur en vous suggérant de créer le fichier .htaccess. J'ai décidé d'essayer mais ça n'a rien fait. Ce que j’ai découvert, c’est que mes permaliens fonctionnaient toujours avec le fichier .htaccess supprimé. Cela m'a intrigué au début. J'ai ouvert mon client FTP et navigué dans mes fichiers. J'ai remarqué qu'il y avait un fichier .htaccess après l'avoir supprimé. Je ne sais pas s'il s'agit de WordPress, de mon compte d'hébergement ou de ce qui l'a exactement créé, mais je sais que c'est nouveau. Ce n'est pas arrivé avant. Vous pouvez essayer cette méthode si tout le reste échoue.

Je ne pouvais pas recréer le problème dans votre question, donc je ne suis pas sûr à 100% si cela fonctionne pour vous. Cela vaut le coup d'essayer.

cordialement, Jeremy Jared

0
Jeremy Jared