这里我可能忽略了一些非常简单的东西,但我正在尝试将所有错误的URL重定向到一个操作,该操作根据条件过滤URL,然后301重定向到合适的页面或发出404页面。
为此,我在路由表的末尾有一条这样的路由:
routes.MapRoute("Error", "{*url}", new { controller = "Main", action = "Error" });
一个类似这样的动作:
public ActionResult Error(string url)
{
if (/* Conditions are met
我已经启用了SSL (Certbot)站点,所以我在/etc/apache2/sites-available/example.com-le-ssl.conf文件中设置了301重定向。我是这样做的,因为据我所知,非ssl虚拟主机(:80)将所有内容重定向到:443。
有些重定向工作,但是如果URL片段是相同的(除了移到父URL段段),那么我将得到一个重定向循环。而且,带有GET参数的博客文章根本不会被获取。
就像这样:
# This works
Redirect 301 /foobar https://www.example.com/slug/foo-bar/
# This loops
Red