J'ai ce site Web par exemple:
J'héberge toujours cet ancien site mais je l'ai déplacé ici:
J'aimerais que chaque ancienne page pointe vers chaque nouvelle page. Une redirection permanente comme celle-ci:
https://www.neuraxle.neuraxio.com/* ==> https://www.neuraxio.com/en/neuraxle/*
Dois-je héberger un serveur pour que cela puisse écrire manuellement une application Python Flask qui redirige chaque URL avec une réécriture personnalisée? Je voudrais éviter de coder cela en utilisant DNS. Y a-t-il une astuce DNS que je peux utiliser? J'utilise GoDaddy pour gérer mon DNS.
Facultatif: s'il n'y a rien à faire avec DNS, pouvez-vous fournir un exemple de méthode de gestionnaire d'URL Flask? Existe-t-il un service d'hébergement gratuit disponible pour héberger cette application Flask?
3 Réponses :
Vous devriez pouvoir rediriger, en utilisant les fichiers RewriteEngine
et .htaccess
que vous devriez avoir dans votre racine Web ou accessible via votre panneau de contrôle d'hébergement, en utilisant des expressions régulières. Je ne suis pas sûr de la direction du mouvement en raison de votre formulation, donc juste au cas où, voici les deux directions avec quelques références.
Si vous souhaitez rediriger depuis sous-domaine dans le dossier (ce qui semble plus probable selon votre exemple), vous pouvez faire quelque chose comme ceci:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.neuraxio.com RewriteRule ^en/neuraxle/(.*)$ http://www.neuraxle.sample.com/$1 [L,R=301]
Si vous souhaitez rediriger du dossier vers sous-domaine , vous pouvez faire quelque chose comme:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.neuraxle\.neuraxio.\com$ RewriteCond %{REQUEST_URI} !^/en/neuraxle RewriteRule ^(.*)$ /en/neuraxle/$1 [L,NC]
Quelques références supplémentaires:
Modifier: dans un autre cas, cela dépend de l'option / plate-forme de déploiement que vous avez utilisée et que vous n'avez pas mentionnée dans votre question.
Et en fait, sur encore une autre pensée, GoDaddy permet en effet une redirection DNS. Aller à Et près du bas de la page à droite, il y aura une section de transfert:
Dans le SUBDOMAIN entrez: www.neuraxle
et dans le FORWARD TO sélectionnez https: // code > et entrez
www.neuraxio.com/en/neuraxle/
et cela devrait faire l'affaire. Je garderai les informations de mod_rewrite
au cas où.
Est-ce un serveur PHP avec cPanel? De quel type de serveur s'agit-il précisément?
mod_rewrite
est disponible dans les serveurs Web ( Apache
et nginx
sont les plus courants) et si vous utilisez un hébergement partagé, l'accès à leur configuration peut être via un fichier .htaccess
dans le public_html
ou un dossier racine Web nommé similaire ou, via le panneau de contrôle de l'hébergement (dont cPanel
est le plus commun). Si vous n'utilisez AUCUN serveur Web mais que vous servez directement depuis Flask, mod_rewrite
peut toujours être une option flask.palletsprojects.com/en/1.1.x/deploying/cgi
Votre solution DNS ne fonctionne pas et semble avoir cassé le site. Essayez de visiter neuraxle.neuraxio.com par exemple.
Si par "ont interrompu le site", vous entendez le message du navigateur indiquant que la connexion n'est pas privée, vous devez corriger votre certificat SSL pour couvrir tous les sous-domaines - un certificat générique comme décrit ici, par exemple: ca.godaddy.com/help/what-is-a-wildcard-ssl-certificate -567 Sinon, le site fonctionne très bien pour moi lorsque je contourne l'avertissement de connexion non privée
Y aurait-il un moyen d'éviter d'acheter des certificats génériques tout du long?
Pour éviter les alertes de sécurité du navigateur, vous devez soit acheter un certificat générique, un certificat multidomaine ou deux certificats: serverfault.com/questions/566426/... , vous pouvez également arrêter d'utiliser SSL et passer à HTTP, enfin vous pouvez trouver une option gratuite (J'ai déjà utilisé StartSSL): geekflare.com/free-ssl-tls-certificate < / a>
Cela devrait être utile.
Parfois, vous devez créer un site Web qui redirige simplement d'un domaine vers un autre. Par exemple, vous avez peut-être créé un site Web sur votre nom d'utilisateur.pythonanywhere.com, et il est devenu suffisamment populaire pour que vous ayez décidé de passer à un forfait payant et de l'héberger sur www.votredomaine.com - mais il existe de nombreux liens qui accédez à l'ancien domaine, et vous voulez qu'ils continuent à fonctionner.
La meilleure solution est d'avoir un site Web simple fonctionnant à yourusername.pythonanywhere.com qui, lorsqu'il reçoit une demande, redirige l'utilisateur vers le nouveau domaine - ainsi les demandes adressées à http://yourusername.pythonanywhere.com/something sont automatiquement redirigées vers http://www.yourdomain.com/something , etc.
Pour ce faire, vous devez disposer d'un site Web dans l'onglet "Web" pour les deux domaines; celui sur www.yourdomain.com est votre site principal, et celui sur yourusername.pythonanywhere.com est une simple application Flask utilisant Python 3.6, avec le code suivant dans le fichier flask_app.py:
from flask import Flask, redirect, request app = Flask(__name__) from urllib.parse import urlparse, urlunparse FROM_DOMAIN = "yourusername.pythonanywhere.com" TO_DOMAIN = "www.yourdomain.com" @app.before_request def redirect_to_new_domain(): urlparts = urlparse(request.url) if urlparts.netloc == FROM_DOMAIN: urlparts_list = list(urlparts) urlparts_list[1] = TO_DOMAIN return redirect(urlunparse(urlparts_list), code=301)
OU ESSAYEZ LA MÉTHODE CI-DESSOUS
Cela semble fonctionner. Cela fonctionnerait-il aussi pour une page profonde comme celle-ci: https://www.neuraxle.neuraxio.com/something/something.html
rediriger vers https://www.neuraxio.com /en/neuraxle/something/something.htm l
Ce n'est pas près de travailler. J'ai accepté la prime car c'était la date limite.
Cette réponse valorisée et acceptée est médiocre:
@app.before_request def redirect_to_new_domain(): FROM_DOMAINS = ['0.0.0.0:' + str(PORT), 'https://www.neuraxio.com', 'www.neuraxio.com', "neuraxio.com"] SUBPATH = "/en/neuraxle" TO_DOMAIN = 'www.neuraxle.org' urlparts = urlparse(request.url) print(urlparts, urlparts.netloc) if urlparts.netloc in FROM_DOMAINS and SUBPATH in urlparts.path: parsed = urlparts parsed = parsed._replace(netloc=TO_DOMAIN) parsed = parsed._replace(path=urlparts.path.replace(SUBPATH, "")) return redirect(parsed.geturl(), code=301)
Remarque: ma propre réponse ici ne répond pas complètement à la question d'origine, mais au moins compile. Nous avions également besoin de cela comme je réponds maintenant, à l'exception du fait que nous avons également un sous-chemin à rediriger depuis au lieu de vers.