Contenu de l'article:
- Перенаправление на url со слэшем 1 Redirect to url with slash
- Rewrite для WordPress 2 Réécrire pour WordPress
- Rewrite для MODx 3 Réécrire pour MODx
- 301-й редирект с index.php, index.html в любой папке 4 301 redirect de index.php, index.html dans n’importe quel dossier
- Прочие 5 autres
Rediriger vers une URL avec une barre oblique
Certains CMS de sites peuvent ouvrir des pages avec une barre oblique à la fin, ou sans, si le moteur ne se redirige pas. Par exemple, la page http://example.net/page et http://example.net/page/ du point de vue du visiteur en sera une. Mais pour les moteurs de recherche, ce sont deux pages différentes, et la barre oblique est à blâmer pour tout. Donc, le contenu en double est mauvais.
Pour rediriger vers la page de barre oblique, ajoutez la ligne suivante au fichier de configuration nginx de votre site:
réécrire ^ ([^.] * [^ /]) $ $ 1 / permanent;
Maintenant, la page sans barre oblique sera redirigée vers la 301e redirection vers la page avec la barre oblique. Pour les pages avec des extensions (.html, .php, etc.), cette règle n’affectera pas. En outre, elle est universelle et, afin que le moteur ne traite pas les redirections à l'aide de php, cette règle doit être prescrite pour la plupart des sites où des adresses lisibles par l'homme sont utilisées.
Réécrire pour WordPress
La documentation WordPress contient un bel exemple de règles de réécriture. Je vais juste souligner la chose la plus élémentaire qui est nécessaire pour travailler en conjonction avec php-fpm .
emplacement / {
try_files $ uri $ uri / /index.php$args;
}
emplacement ~ \ .php $ {
try_files $ uri = 404;
fastcgi_pass unix: /run/php-www.sock;
fastcgi_index index.php;
inclure fastcgi_params;
fastcgi_param SCRIPT_FILENAME $ racine_documentaire $ fastcgi_script_name;
fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com";
fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
} Réécrire pour MODx
Pour les sites sur ce CMS, j'utilise les règles suivantes:
emplacement / {
try_files $ uri $ uri / @rewrite;
}
localisation @rewrite {
réécrire ^ / (. *) $ / index.php?q=$;
}
emplacement ~ \ .php $ {
try_files $ uri = 404;
fastcgi_pass unix: /run/php-www.sock;
fastcgi_index index.php;
inclure fastcgi_params;
fastcgi_param SCRIPT_FILENAME $ racine_documentaire $ fastcgi_script_name;
fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / sendmail -t -i -fmail@example.com";
fastcgi_param PHP_ADMIN_VALUE "open_basedir = / var / www / example.com /: / var / save_path /: / var / tmp_dir /";
} 301e redirection depuis index.php, index.html dans n’importe quel dossier
Il arrive également que le CMS lui-même ne redirige pas les fichiers d'index vers l'URL sans eux. Par exemple, le site devient disponible à la fois sur http://example.com/ et http://example.com/index.php. Cette règle corrige l'erreur.
if ($ request_uri ~ * index. (php | html)) {
réécrire ^ (. +) index.php $ schéma: // $ hôte $ 1 permanent;
} Dans ce cas, peu importe que le fichier d'index se trouve dans le dossier racine ou dans le sous-dossier, la redirection fonctionnera toujours.
Autre
J'ai un de son blog a décidé de changer la structure des liens. Auparavant, tous les messages étaient accessibles via des liens tels que / postname.html. Ils ont maintenant été déplacés vers une autre adresse: / fotojournal / postname /. Initialement, en tant que solution, je pensais utiliser le plug-in de redirection pour wordpress, mais je voulais ensuite essayer de l'implémenter sur nginx. Et l'idée s'est avérée. :)
Certes, la règle s’est révélée simple en raison du fait que toutes les pages /%postname%.html ont été transférées dans une catégorie - fotojournal. Cette règle ressemble à ceci:
emplacement ~ * \. (html) $ {
try_files $ uri $ uri / @fotojournal;
}
location @fotojournal {
réécrire ^ / (. *) \. html $ / fotojournal / $ 1 / permanent;
}
Nous considérons en détail. Lorsqu'une demande provient d'un utilisateur, tout fichier portant l'extension .html est d'abord recherché dans le dossier contenant le site. Cela est nécessaire pour les pages HTML réelles du site, qui ne doivent pas être transférées dans une nouvelle catégorie.
Si la page demandée n'a pas été trouvée, la demande est redirigée vers le deuxième emplacement - @fotojournal. Ici, vous êtes redirigé (redirection 301) vers une nouvelle adresse. Par exemple, page / page.html s'ouvre à / fotojournal / page /.


