标签: url-routing

国际化和搜索引擎优化

我想将我的网站国际化,以便可以使用多种语言访问.将自动在请求数据中检测语言设置,并且可以在用户的​​设置中覆盖/存储在会话中.

我的问题是关于如何根据页面的URL显示基于语言的同一页面的各种版本.假设我们只是查看索引页面http://www.example.com/,默认为英文.现在,如果讲法语的人加载索引页面,我应该只保留URL http://www.example.com/,还是应该将其重定向到http://www.example.com/fr/

我试图弄清楚这在SEO方面有什么好处或后果.我不希望该网站的法语版本显示在google.com上,如果它阻止相同页面的英文版本显示在那里,但我希望它显示在google.fr中.

seo search-engine url-routing internationalization

18
推荐指数
1
解决办法
5164
查看次数

拒绝承诺Angular ui-router后的$ state transition

我正在使用Angular ui-router并在初始化控制器之前为我的一个状态设置了解析功能.我检索一些数据,循环并匹配URL stateParam,如果找到匹配,解析对控制器的承诺并在promise中返回该对象.这一切都运作良好.

但是,如果未找到匹配项,我只想通过拒绝承诺并运行来重定向到其他状态 $state.go('state');

这个:

deferred.reject();
$state.go('state',{params: 'param'});
Run Code Online (Sandbox Code Playgroud)

但这似乎没有做任何事情.控制器只是挂起,我没有控制台错误或任何东西.有任何想法吗?

这个问题适用于版本0.xx,版本1.xx中的许多内容已经改变

javascript url-routing promise angularjs angular-ui-router

18
推荐指数
1
解决办法
2万
查看次数

如何在使用Ruby重定向后获取最终的URL?

如果http://foo.com重定向到重定向到的1.2.3.4重定向http://finalurl.com,我如何使用Ruby找到登陆URL"http://finalurl.com"?

ruby networking redirect url-routing

17
推荐指数
1
解决办法
6689
查看次数

Rails REST路由:资源项ID中的点

我在我的routes.rb中有以下内容:

resources :users, :except => [:new, :create] do
    get 'friends', :as => :friends, :on => :member, :to => "users#friends"
end
Run Code Online (Sandbox Code Playgroud)

并在我的user.rb中关注:

def to_param
  self.login
end
Run Code Online (Sandbox Code Playgroud)

例如,当登录点上的用户(例如'any.thing')来自facebook时,rails会发出路由错误(没有找到路由,我想这是因为它将点后面的任何内容识别为格式或因为路径限制).我怎么能克服这个错误?

rest ruby-on-rails url-routing ruby-on-rails-3

17
推荐指数
2
解决办法
1万
查看次数

asp.net mvc routing:如何使用默认动作但非默认参数?

我正在改写这个问题,因为到目前为止答案显示我没有把它定义得足够好.我将留下原始问题以供参考.

设置路由时,您可以为不同的URL /路由部分指定默认值.让我们考虑VS向导生成的示例:

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "DefaultPage", action = "Index", id = UrlParameter.Optional } // Parameter defaults
Run Code Online (Sandbox Code Playgroud)

在此示例中,如果未指定controller,将使用DefaultPageController,如果未指定action,则将使用"Index"操作.网址通常如下:http://mysite/MyController/MyAction.

如果Url中没有这样的操作:http://mysite/MyController那么将使用索引操作.

现在让我们假设我的控制器Index和AnotherAction中有两个动作.与它们对应的URL 分别是http://mysite/MyControllerhttp://mysite/MyController/AnotherAction.我的"索引"操作接受参数id.所以如果我需要将参数传递给我的Index动作,我可以这样做:http://mysite/MyController/Index/123.请注意,与URL不同http://mysite/MyController,我必须明确指定Index操作.我想做的是能够通过http://mysite/MyController/123而不是http://mysite/MyController/Index/123.我不需要此URL中的"索引"我希望mvc引擎识别,当我要求时http://mysite/MyController/123,123不是动作(因为我没有定义具有此名称的动作),而是我的默认动作的参数"指数".如何设置路由来实现此目的?

以下是问题的原始措辞.


我有一个控制器,有两种方法,这样定义

    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Index(SomeFormData data)
    {
        return View();

    }
Run Code Online (Sandbox Code Playgroud)

这允许我http://website/Page在用户导航到此URL(GET)时以及随后回发表单(POST)时处理Url .

现在,当我处理回发帖时,在某些情况下我想将浏览器重定向到此网址:

http://website/Page/123
Run Code Online (Sandbox Code Playgroud)

其中123是一个整数,我需要一个方法来处理我的控制器中的这个URL.

如何设置路由,这有效吗?目前我有向导生成的"默认"路由,如下所示:

        routes.MapRoute(
            "Default", // Route …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc routing url-routing asp.net-mvc-routing

17
推荐指数
1
解决办法
3万
查看次数

使用Flask和非唯一处理程序名称构建URL

Flask提供了一种url_for功能,可根据URL模式为处理程序生成URL.但这意味着处理程序函数必须在整个应用程序中具有唯一的名称.那是对的吗?

模块A有一个处理程序index:

@app.route('/')
def index(): pass
Run Code Online (Sandbox Code Playgroud)

模块B有另一个处理程序index:

@app.route('/anotherindex')
def index(): pass
Run Code Online (Sandbox Code Playgroud)

如何区分index构建URL时调用的处理程序?

url_for('index')
Run Code Online (Sandbox Code Playgroud)

python url wsgi url-routing flask

17
推荐指数
1
解决办法
4030
查看次数

MVC基于角色的路由

我有一个项目有2个区域/管理员和/用户.

管理员的默认路由是/ Admin/Home/Index,用户的默认路由是/ User/Home/Index.

是否可以实现路由以使其主页URL看起来像/ Profile/Index,但是显示来自/ Admin/Home/Index for admins和/ User/Home/Index for users的内容?

UPD

最后找出如何做到这一点

context.MapRoute(
    "Admin",
    "Profile/{action}",
    new { area = AreaName, controller = "Home", action = "Index" },
    new { RoleConstraint = new Core.RoleConstraint() },
    new[] { "MvcApplication1.Areas.Admin.Controllers" }
);
...
context.MapRoute(
    "User",
    "Profile/{action}",
    new { area = AreaName, controller = "Home", action = "Index" },
    new { RoleConstraint = new Core.RoleConstraint() },
    new[] { "MvcApplication1.Areas.User.Controllers" }
);

public class RoleConstraint …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc authorization url-routing asp.net-mvc-3

17
推荐指数
1
解决办法
4488
查看次数

什么是客户端路由以及如何使用它?

如果有人能回答以下问题,我将很高兴

  1. 它是如何工作的?
  2. 为什么有必要?
  3. 它有什么改进?

client-side url-routing

17
推荐指数
2
解决办法
8425
查看次数

Web API小写路由

那里,

我需要在我的Web API项目中强制使用Lowercase路由.如果它是一个MVC项目,我会使用类似的东西

routes.LowercaseUrls = true;
Run Code Online (Sandbox Code Playgroud)

但是在Web API中,属性不存在.

我尝试了LowercaseRoutesMVC4 NuGet扩展,但我的路由需要有一个自定义处理程序,以便扩展不会帮助我.

我能做什么?

asp.net routes url-routing asp.net-web-api

17
推荐指数
1
解决办法
2621
查看次数

Express.js中的默认路由

我正在用node.js和express编写一个应用程序.

我已经设置了一个默认路由:

app.get('/', function(req, res){
  res.sendfile('./views/index.html');
});
Run Code Online (Sandbox Code Playgroud)

当我转到/ localhost:port /时,这工作正常

但是在我输入任何内容之后的URL中,/ localhost:port/blah我得到了404 ERROR,这是有意义的.

我想设置一个默认路由,这样无论我在localhost:port /之后输入的是什么,它都应该返回相同的html文件.

我尝试更改/到*:

app.get('*', function(req, res){
  res.sendfile('./views/index.html');
});
Run Code Online (Sandbox Code Playgroud)

但在我这样做后,我开始在控制台中收到此错误,并且没有显示任何内容:

未捕获的SyntaxError:意外的令牌<

在我的所有Javascript文件中:: 3000/scripts/myscript.js:1

不知何故,我的javascript文件显示HTML的内容

===编辑====

我用过这个,它适用于第一级网址:比如loclhost:port/blah

app.use(function(req, res){
    res.sendfile('./views/index.html');
});
Run Code Online (Sandbox Code Playgroud)

但是当URL是多级的时,我看到了与前面描述的相同的问题localhost:port/blah/foo这里的问题是路由器在/ blah文件夹下查找所有javascript和CSS文件的公共目录,在这种情况下,不存在.它返回默认的HTML文件.我该如何解决?

==================编辑发布整个代码=========================== ==============

var http = require('http');
var express = require('express');
var api = require('./routes/api');
var mongoose = require('mongoose');
var app = express();


mongoose.connect('mongodb://localhost/mydb');

app.set('port', process.env.PORT || 3000);
app.set('view engine', 'jade');

app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);

app.use(express.static(__dirname + '/public'));

app.get('/api/user/:userid', api.getUserInfo);

app.get('/', …
Run Code Online (Sandbox Code Playgroud)

javascript url-routing node.js express

17
推荐指数
2
解决办法
4万
查看次数