例如,我有这个网站:
我仍然托管那个旧站点,但是我将其移到了这里:
我希望每个旧页面都指向每个新页面。像这样的永久重定向:
https://www.neuraxle.neuraxio.com/* ==> https://www.neuraxio.com/en/neuraxle/*
我需要为此托管一台服务器来手动编写Python Flask应用程序,以自定义重写重定向每个URL吗?我想避免使用DNS对此进行编码。我可以使用DNS技巧吗?我使用GoDaddy来管理我的DNS。
可选:如果DNS无关,您能否提供示例Flask URL处理程序方法?是否有免费的托管服务可供我托管此烧瓶应用程序?
您应该能够使用应在您的Web根目录中拥有的RewriteEngine
和.htaccess
文件进行重定向,或者使用正则表达式通过托管控制面板进行访问。由于您的措辞,我对移动的方向不太确定,以防万一,这两个方向都有一些参考。
如果您想从subdomain to folder重定向(按照您的示例,这种可能性更大),您可以执行以下操作:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.neuraxle\.neuraxio.\com$
RewriteCond %{REQUEST_URI} !^/en/neuraxle
RewriteRule ^(.*)$ /en/neuraxle/$1 [L,NC]
如果要从folder to subdomain重定向,则可以执行以下操作:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.neuraxio.com
RewriteRule ^en/neuraxle/(.*)$ http://www.neuraxle.sample.com/$1 [L,R=301]
一些其他参考:
[Edit:另一个想法取决于您所使用的部署选项/平台,而您未在问题中提及。
实际上,从另一个角度来说,GoDaddy确实允许DNS重定向。去在右侧页面底部附近,将存在转发部分:
在SUBDOMAIN中输入:www.neuraxle
,然后在FORWARD TO中选择https://
,然后输入www.neuraxio.com/en/neuraxle/
,这样就可以解决问题。我会保留mod_rewrite
信息以防万一。
这应该有所帮助。
有时您需要编写一个网站,该网站可以简单地从一个域重定向到另一个域。例如,您可能已经在yourusername.pythonanywhere.com上创建了一个网站,并且该网站已变得非常流行,因此您决定升级到付费计划并将其托管在www.yourdomain.com上-但是那里有很多链接转到旧域,然后让他们继续工作。
[最佳解决方案是在您的username.pythonanywhere.com上运行一个简单的网站,该网站在收到请求后会将用户重定向到新域-因此,对http://yourusername.pythonanywhere.com/something的请求会自动重定向到http://www.yourdomain.com/something,并且依此类推。
为此,您需要在两个域的“ Web”选项卡上都有一个网站; www.yourdomain.com上的一个是您的主站点,yourusername.pythonanywhere.com上的一个是使用Python 3.6的简单Flask应用程序,在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)
或尝试以下方法