J'ai mis à jour la structure de permalien vers /% postname%/et cela a mis à jour mon .htaccess avec:
# 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
Mais j'ai toujours 404 erreurs sur les pages. Dois-je modifier d'autres paramètres?
Edit: si cela aide, le journal Apache semble chercher directement dans le dossier permalien. C'est à dire.:
[Wed Oct 16 11:12:32 2013] [error] [client xx.xx.xx.xxx] File does not exist: /var/www/exampledomain/news, referer: http://exampledomain.com/
Pour les autres personnes accédant sur cette page - /. Un autre problème pourrait être (si vous utilisez Apache en tant que serveur Web), votre fichier httpd.conf ou votre fichier sites-available/sitename.conf doit être édité.
Votre répertoire Web devra permettre au fichier .htaccess de remplacer ses paramètres.
recherchez votre répertoire Web dans le fichier - ce sera dans la majeure partie du fichier de configuration ou dans une section VirtualHost.
<Directory /path/to/site>
#add the following setting to allow .htaccess in your web dir to work
AllowOverride FileInfo
#other settings ---
</Directory>
Cela vous permettra de configurer les URL WordPress comme vous le souhaitez, au sein de WordPress.
*** Édité - Merci nietonfir Pour la mise à jour. Utilisez le moins de privilèges au début. Si cela ne fonctionne pas, remplacez AllowOverride FileInfo
par AllowOverride All
Plusieurs facteurs peuvent empêcher la règle de réécriture de fonctionner. Mon serveur Ubuntu avait besoin de 3 changements pour que les permaliens fonctionnent.
Dans les nouvelles versions d'Apache2, vous devez activer le module:
Sudo a2enmod rewrite
Sudo service Apache2 restart
Vous devrez peut-être également modifier le fichier Apache2.conf.
Sudo nano /etc/Apache2/Apache2.conf
Modifiez votre règle de substitution de répertoire Web en AllowOverride All .
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Après cela, redémarrez à nouveau le service.
Le fichier .htaccess du répertoire d’installation de WordPress doit être détenu ou lisible/modifiable par le serveur Web.
Cela peut être accompli en remplaçant le propriétaire par www-data (généralement l'utilisateur du serveur Web) ou en modifiant les autorisations.
Sudo chown www-data /var/www/wordpress-install/.htaccess
OR
Sudo chmod 664 /var/www/wordpress-install/.htaccess
Connectez-vous à votre backend administrateur Wordpress et enregistrez les paramètres de permalien. Ils devraient fonctionner normalement.
Ceci est maintenant résolu. Je n'avais pas activé mod_rewrite. Alors j'ai fait ça:
$ Sudo a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
service Apache2 restart
$ service Apache2 restart
* Restarting web server Apache2
utilisez ci-dessous le code .htaccess, il suffit de mettre le nom de votre projet (qui est dans le répertoire www) dans le code ci-dessous
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project_name/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /project_name/index.php [L]
</IfModule>
# END WordPress
Merci
Vous voudriez dire à Apache de suivre votre fichier .htaccess. Vous pouvez le faire en modifiant le fichier Apache.conf
$Sudo nano /etc/Apache2/Apache.conf
Faites défiler jusqu'à la ligne Par défaut, ce sera:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
remplacez la valeur de AllowOverride par All, elle devient alors:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Appuyez sur ctrl + x et appuyez sur y pour enregistrer le fichier de configuration. Afin d’apporter ces modifications au serveur, activez d’abord le mod_rewrite.
$ Sudo a2enmod rewrite
Et puis redémarrez le serveur
$ Sudo service Apache2 restart
Terminé!
Source: https://www.wst.space/riddling-with-wordpress-permalink-setup-issues/
Une dernière chose à vérifier si cela décrit votre problème:
Assurez-vous qu'il n'y a pas de fichiers .php ou de répertoires existants dans le même dossier que votre installation Wordpress avec des noms correspondant à un permalien Wordpress.
Par exemple, si vous avez les permaliens de la page Wordpress suivants:
example.com/name_one/
example.com/name_two/
et le répertoire contenant votre installation Wordpress comprend le fichier suivant:
name_one.php
alors ce sera le résultat:
Plus important encore, la deuxième URL donnera un 404 au lieu de name_one.php, ce qui signifie que ce problème est difficile à diagnostiquer car il peut donner les mêmes symptômes qu’un fichier .htaccess mal écrit.
Utilisateurs de WAMP (Windows): certaines versions de WAMP (toutes versions?) N'activent pas mod_rewrite ni ne permettent de suivre les liens SymLinks par défaut. Pour activer la fonctionnalité requise, accédez au Apache/conf/httpd.conf file
, ouvrez-le à l'aide d'un éditeur de texte et décommentez la ligne LoadModule rewrite_module modules/mod_rewrite
.so (c'est-à-dire supprimez le signe dièse/dièse au début de la ligne). Ensuite, dans le même fichier, une section commence par la ligne "Options FollowSymlinks". Modifiez la deuxième ligne de cette section de "AllowOverride none
" en AllowOverride all
. Enregistrez le fichier httpd.conf modifié et redémarrez tous les modules WAMP. Vos permaliens devraient maintenant fonctionner.
Je faisais face au même problème et il me restait encore une chose à rechercher.
Voici ce que vous devez faire pour que Wordpress permalinks fonctionne correctement:
Assurez-vous que vous disposez des modes d'autorisation appropriés pour les fichiers et les dossiers de votre répertoire wordpress:Sudo find . -type f -exec chmod 644 {} +
Sudo find . -type d -exec chmod 755 {} +
Pour la structure permalien, assurez-vous que mode_rewrite
est activé dans Apache:Sudo a2enmod rewrite
Sudo service Apache2 restart
Encore une autre possibilité: je viens de mettre à jour mon macOS qui toujours vis le fichier de configuration Apache Entre autres choses, j'ai également dû réactiver le module mod_rewrite
. Trouvez la ligne qui dit,
#LoadModule rewrite_module libexec/Apache2/mod_rewrite.so
Et enlève le hash, dit-il,
LoadModule rewrite_module libexec/Apache2/mod_rewrite.so
Si vous êtes configuration d'un nouveau site ou d'un site cloné sur Ubuntu, n'oubliez pas de créer un lien symbolique vers le fichier de configuration du site, par exemple. /etc/Apache2/sites-available/your-file.conf
dans le dossier /etc/Apache2/sites-enabled
afin qu'Apache le charge.
Il suffit de lancer: Sudo a2ensite your-file.conf
, puis Sudo service Apache2 reload
.
Sudo a2dissite your-file.conf
pour supprimer le lien symbolique, c’est-à-dire désactiver la configuration.