我试过寻找答案,但首先要问的是一个棘手的问题.
请考虑以下URL:
使用正确的正则表达式返回以下内容:
我正在尝试使用正则表达式来获取中心值.在所有情况下我都知道字符串的第一个和最后一个字,即'hotels'(第一个)和'5star'(last).
更新:我需要使用正则表达式,因为URL是通过Codeigniters URI路由器路由的.URI的中心部分是为搜索结果动态构建的.
我是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)
知道我做错了什么.
我通过官方手册,无法弄明白.
提前致谢.
我正在将一个电子商务网站转换为特定于区域(例如美国、欧盟)的网站,因此根据访问者将看到的内容,它基本上会感觉像是一个不同的网站,即使它实际上是一个网站(对于许多人来说)原因)。我网站上的大多数路径都将成为特定于区域的路径,通过在路径开头添加区域前缀,例如“/us/”(我可以转换所有路径,但如果它使它变得更加容易的话)。
我的计划:
中间件根据 1) 请求路径、2) 会话或 3) 根据 IP 地址的顺序猜测来识别区域,并将其设置在请求对象上。此外,一旦他们使用区域路径,它就会存储为会话值。通过这种方式,区域上下文可以跨非区域特定的 URL 传递。
特定于区域的 URL 模式必须更新以匹配区域,即使我已经在中间件中检测到该区域,因为逻辑比路径更复杂。尽管如此,出于下一个原因(反向),我必须将其作为参数并传递到我的所有视图中。此外,任何变为区域性的路径都将使其先前的模式301重定向到其区域性路径。
为了生成特定于区域的链接,我必须通过添加区域参数来更新对 reverse() 和 {% url %} 的许多调用。我希望这里有一些层可以自定义,以便在了解请求的情况下动态反转 URL。
我的主要问题是处理逆转的最佳方法(最后一个项目符号)。感觉像是做了很多不必要的工作。我愿意接受更好的方法来解决整体问题。
更新:
我正在使用 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 服务器。
我最近正在使用 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_token
到http://localhost:8000/afterlogin/#id_token=some_id_token
.
但由于某种原因,它向我显示 404 错误。我认为这是因为网址中的“#”,我想要id_token
. 我知道html中的“#”意味着“href”中的路径链接或路由。
所以我尝试过。
@app.route('/afterlogin/<path:id>')
Run Code Online (Sandbox Code Playgroud)
但错误仍然存在。
有什么猜测吗?
我有一个路由和方法以这种方式操纵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
定义: …
在下面,有什么原因#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) 我有一个基本的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自动检测前缀解析class
和function
?
我可以甚至是否需要设置基本路径?
具体例子
我的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)
这是根据为该设置提供的文档.