J'essaie de créer mon site Web de sorte que example.com/profile/?name=john
puisse être consulté dans une URL plus propre, telle que example.com/profile/john/
.
Je le fais fonctionner afin que je puisse accéder à $_GET["name"]
mais il me montre une page 404
. Mon lien permanent est défini sur /%postname%/
et il me suffit d'accéder au nom du profil à l'aide de $_GET
. Le nom du profil n’est pas lié à WordPress comme un auteur.
Je me demande s'il est possible de le faire sans renvoyer une page 404
et, dans l'affirmative, comment procéder. Mon code .htaccess
actuel est ci-dessous:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^profile/([^/]*)/$ /profile/?name=$1 [L]
</IfModule>
# 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
La règle personnalisée que vous essayez ne répond pas aux critères. Voici un outil astucieux en ligne .htaccess
testeur à vérifier pour vérifier la logique de réécriture.
Utilisez plutôt la suite RewriteRule
:
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
Assurez-vous de remplacer ^example\.com$
sur la première ligne par votre domaine actuel.
Vous pouvez également l'intégrer dans la balise <IfModule mod_rewrite.c>
créée par WordPress, qui devrait ressembler à ce qui suit comme résultat final:
# 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]
# BEGIN Custom Rules
RewriteCond %{QUERY_STRING} (^|&)name=(.*)
RewriteRule ^(.*)$ /profile/%2/? [R=301,L]
</IfModule>
# END Custom Rules
# END WordPress