标签: url-routing

URL中的正则表达式

我试过寻找答案,但首先要问的是一个棘手的问题.

请考虑以下URL:

  • 酒店 - 伦敦肯辛顿 - 5星级
  • 酒店 - 伦敦肯辛顿 - 梅费尔 - 5星级
  • 酒店 - 伦敦 - 五星

使用正确的正则表达式返回以下内容:

  • 位于伦敦的肯辛顿
  • 位于伦敦的肯辛顿 - 梅费尔
  • 伦敦

我正在尝试使用正则表达式来获取中心值.在所有情况下我都知道字符串的第一个和最后一个字,即'hotels'(第一个)和'5star'(last).

更新:我需要使用正则表达式,因为URL是通过Codeigniters URI路由器路由的.URI的中心部分是为搜索结果动态构建的.

php regex codeigniter url-routing

0
推荐指数
1
解决办法
90
查看次数

AngularJS路由配置

我是angularjs的新手,只是想用它构建一个CRUD应用程序.

我的代码就像这样http://jsfiddle.net/fpnna/1/

我正在使用apache作为网络服务器

$locationProvider.html5mode(true);
Run Code Online (Sandbox Code Playgroud)

然后得到

uncaught TypeError: Object #<Ic> has no method 'html5mode' from testApp 
Run Code Online (Sandbox Code Playgroud)

当我点击"添加新"时,路径更改为"/ new"但收到错误

404 The requested URL /new was not found on this server.
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么.

我通过官方手册,无法弄明白.

提前致谢.

javascript url-routing angularjs

0
推荐指数
1
解决办法
4833
查看次数

在 Django 中,如何向大多数路径添加区域前缀

我正在将一个电子商务网站转换为特定于区域(例如美国、欧盟)的网站,因此根据访问者将看到的内容,它基本上会感觉像是一个不同的网站,即使它实际上是一个网站(对于许多人来说)原因)。我网站上的大多数路径都将成为特定于区域的路径,通过在路径开头添加区域前缀,例如“/us/”(我可以转换所有路径,但如果它使它变得更加容易的话)。

我的计划:

  • 中间件根据 1) 请求路径、2) 会话或 3) 根据 IP 地址的顺序猜测来识别区域,并将其设置在请求对象上。此外,一旦他们使用区域路径,它就会存储为会话值。通过这种方式,区域上下文可以跨非区域特定的 URL 传递。

  • 特定于区域的 URL 模式必须更新以匹配区域,即使我已经在中间件中检测到该区域,因为逻辑比路径更复杂。尽管如此,出于下一个原因(反向),我必须将其作为参数并传递到我的所有视图中。此外,任何变为区域性的路径都将使其先前的模式301重定向到其区域性路径。

  • 为了生成特定于区域的链接,我必须通过添加区域参数来更新对 reverse() 和 {% url %} 的许多调用。我希望这里有一些层可以自定义,以便在了解请求的情况下动态反转 URL。

我的主要问题是处理逆转的最佳方法(最后一个项目符号)。感觉像是做了很多不必要的工作。我愿意接受更好的方法来解决整体问题。

更新:

  • 我排除了子域名,因为众所周知,它们不利于 SEO 和转移权限。另外,我认为子域可能意味着完全不同的设置,而现在我将其作为单个网络应用程序进行管理。
  • 正如 @RemcoGerlich 指出的,基本上我想添加 LocaleMiddleware/i18n_patterns 在 urlconf 和逆向中添加的自动行为。

django country routes url-routing region

0
推荐指数
1
解决办法
1117
查看次数

如何在 Slim 3 或 nikic/FastRoute 参数中允许点?

我正在使用 Slim 3,它使用 nikic/FastRoute,并且在使用端点时遇到问题,如下所示:

$app->get('/count/{url}', function ($request, $response) use ($curl) {
    $controller = new Proximate\Controller\CountUrl($request, $response);
    $controller->setCurl($curl);
    return $controller->execute();
});
Run Code Online (Sandbox Code Playgroud)

我的计划是将 urlencoded URL 传递到控制器中{url}并将其注入到控制器中。例如,对于http://www.example.com,请求将是:

curl \
    --verbose \
    http://localhost:8080/count/http%3A%2F%2Fwww.example.com%2F
Run Code Online (Sandbox Code Playgroud)

然而,这会失败并返回 404,因此显然不匹配。这也失败了:

curl \
    --verbose \
    http://localhost:8080/count/http%3A%2F%2Fwww.
Run Code Online (Sandbox Code Playgroud)

然而,奇怪的是,这确实匹配(即没有尾随点):

curl \
    --verbose \
    http://localhost:8080/count/http%3A%2F%2Fwww
Run Code Online (Sandbox Code Playgroud)

我最初认为是 urlencoded 斜杠混淆了它 ( %2F),但在没有这些字符的情况下尝试过,我发现实际上它是字符串中任何位置的点。为什么这不匹配,我是否需要正则表达式匹配才能使其正常工作?

我正在为此应用程序使用 PHP 内置 Web 服务器。

php url-routing slim slim-3

0
推荐指数
1
解决办法
780
查看次数

flask:在路由中散列“#”

我最近正在使用 google API,并使用简单的 Flask 方法来检索一些 id_token。

这是我的代码,注释中有解释:

@app.route('/afterlogin/id_token')
def afterlogin(id):  # get the id
    print(id)  # print it 
    return render_template(r'creds_view.html', data=id) # and render the template with 'id' in it (for test purposes)
Run Code Online (Sandbox Code Playgroud)

那么发生的情况是,用户登录后,API 将重定向id_tokenhttp://localhost:8000/afterlogin/#id_token=some_id_token.

但由于某种原因,它向我显示 404 错误。我认为这是因为网址中的“#”,我想要id_token. 我知道html中的“#”意味着“href”中的路径链接或路由。

所以我尝试过。

@app.route('/afterlogin/<path:id>')
Run Code Online (Sandbox Code Playgroud)

但错误仍然存​​在。

有什么猜测吗?

python url routes url-routing flask

0
推荐指数
1
解决办法
1374
查看次数

重定向|从旧URL转发到新URL

我有一个路由和方法以这种方式操纵URL:

http://domain.com/combivent?email=WGA1cUtKZi4
Run Code Online (Sandbox Code Playgroud)

现在该URL已更改为此URL:

http://domain.com/?email=WGA1cUtKZi4
Run Code Online (Sandbox Code Playgroud)

但旧的电子邮件仍旧保留旧电子邮件.我需要将每个URL从旧方式重定向到新方式.例如,如果我调用它,http://domain.com/combivent?email=WGA1cUtKZi4那么我应该重定向到http://domain.com/?email=WGA1cUtKZi4如何在Symfony2中实现这一点?我可以在路由中使用任何类型的通配符,还是我需要保留这两种方法并在内部处理它?这可以在.htaccess水平上完成吗?有什么建议?

这是.htaccess看起来像:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
    RewriteRule ^(.*) - [E=BASE:%1]

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]

    # Remove combivent word from the URL when call a brand page
    RewriteRule ^combivent?email=([^/]+)$  /?email=$1 [L,QSA,R=301]

    RewriteRule .? %{ENV:BASE}/app.php [L]    
</IfModule>
Run Code Online (Sandbox Code Playgroud)

此外,这domain.com是共享三个域的VirtualHost的别名.将VH定义视为:

ServerName maindomain.com
ServerAlias domain.com
ServerAlias domain1.com
Run Code Online (Sandbox Code Playgroud)

更新

以下是完整.htaccess定义: …

php .htaccess redirect url-routing symfony

-1
推荐指数
1
解决办法
941
查看次数

Ruby:为什么要使用#not /?

在下面,有什么原因#home而不是/home?所有其他人都是/help,/about.

Rails.application.routes.draw do
  root 'static_pages#home'
  get  'static_pages/help'
  get  'static_pages/about'
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails url-routing

-1
推荐指数
1
解决办法
74
查看次数

使用正则表达式在URL中允许点

如何使用Regex在URL中允许点?有什么建议?

谢谢

regex url url-routing

-2
推荐指数
1
解决办法
1132
查看次数

Codeigniter在子目录中 - 为什么解析控制器/类/功能不起作用?

我有一个基本的codeigniter设置,无法让它运行.我以为我已经明白它的作用如下:

http://localhost/index.php/class/function
Run Code Online (Sandbox Code Playgroud)

其中class指向控制器.

我遇到的问题是我的安装位于子文件夹中,如下所示:

http://localhost/path%20to%20ci/index.php/class/function
Run Code Online (Sandbox Code Playgroud)

和CI总是给我一个404甚至控制器类存在.

我已经深入研究了CI源代码,它向我展示了整个请求URI被视为输入:

path to ci/index.php/class/function
Run Code Online (Sandbox Code Playgroud)

有什么我需要配置,以使CI自动检测前缀解析classfunction

我可以甚至是否需要设置基本路径?

具体例子

我的CI路径可通过以下方式访问

http://localhost/workspace/Limesurvey%20CI/index.php
Run Code Online (Sandbox Code Playgroud)

工作控制器是:

http://localhost/workspace/Limesurvey%20CI/index.php/installer
Run Code Online (Sandbox Code Playgroud)

将基本路径设置application/config/config.php为:

$config['base_url'] = 'http://localhost/workspace/Limesurvey%20CI/';
Run Code Online (Sandbox Code Playgroud)

这是根据为该设置提供的文档.

php codeigniter url-routing

-5
推荐指数
1
解决办法
3026
查看次数