Comment forcer la redirection de tous les 404 (ou de toutes les pages, invalides ou non) vers la page d'accueil?
Actuellement chaque page non valide 500 (Erreur Interne du Serveur) parce que j'ai probablement foiré avec mon serveur de configuration de bloc.
J'ai décidé de fermer mon site il y a un moment et de créer un simple, une page de remerciement de la page d'accueil. Toutefois anciens liens et sites externes sont encore en train d'essayer d'accéder à d'autres parties du site, qui n'existe plus.
Comment puis-je la force de rediriger tous les non-page d'accueil (non valides URL) de la page d'accueil?
J'ai essayé avec le bloc suivant, mais il ne fonctionne pas:
location /{
try_files $uri $uri/$document_uri/index.html;
}
Ma configuration actuelle est (je n'ai même pas de servir les fichiers PHP droit maintenant, c'est à dire la page d'accueil est simple html):
server {
server_name www.example.com example.com;
access_log /srv/www/example.com/logs/access.log;
error_log /srv/www/example.com/logs/error.log;
root /srv/www/example.com/public_html;
index index.php index.html;
location /{
try_files $uri $uri/$document_uri/index.html;
}
# Disable favicon.ico logging
location = /favicon.ico {
log_not_found off;
access_log off;
}
# Allow robots and disable logging
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# Enable permalink structures
if (!-e $request_filename) {
rewrite . /index.php last;
}
# Handle php requests
location ~ \.php$ {
try_files $uri = 404;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_send_timeout 900;
fastcgi_read_timeout 900;
fastcgi_connect_timeout 900;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# Disable static content logging and set cache time to max
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires max;
}
# Deny access to htaccess and htpasswd files
location ~ /\.ht {
deny all;
}
# Deny access to hidden files (beginning with a period)
location ~ /\. {
access_log off; log_not_found off; deny all;
}
}
source d'informationauteur hobbes3
Vous devez vous connecter pour publier un commentaire.
Réglage de la page d'erreur à la page d'accueil comme ce
a un petit problème, le code d'état de la page d'accueil sera "404 not found", si vous voulez charger la page d'accueil avec un "200 ok" code d'état, vous devriez faire comme ceci
Cela vous permettra de transformer le "404 not found" code d'erreur "200 ok" de code, et de charger la page d'accueil
La deuxième méthode, qui @jvperrin mentionné est trop bonne,
mais vous devez garder 1 chose dans l'esprit, puisque c'est la
location /
tout actif qui ne correspond pas à un autre endroit et ne se trouve pas aura également la charge de laindex.html
par exemple des images manquantes, css, fichiers js, mais dans votre cas, je vous vois déjà un autre emplacement que l'appariement de l'actif extensions, de sorte que vous ne devriez pas faire face à ce problème.Essayez d'ajouter la ligne suivante après votre
index
définition:Si cela ne fonctionne pas, essayez de changer votre
try_files
appel à la suivante à la place:Espérons que l'un de ceux qui fonctionne pour vous, je n'ai pas testé encore.
Pour obtenir une véritable redirection, vous pourriez faire ceci:
dans serverblock définir l'erreur la page que vous souhaitez rediriger comme ceci:
Ensuite, vous définissez l'emplacement:
Dans ce cas les erreurs 404 et 500 génère HTTP 302 (redirection temporaire) /(pourrait être de n'importe quelle URL)
Si vous utilisez fast-cgi de php ou autres de ces blocs les éléments suivants doivent être ajoutés pour envoyer les erreurs "upstrem" server-bloc:
Devez utiliser
avec la coutume de redirection, comme
error_page 404 =200 /index.html
oucomme ci-dessus