Symfony:电子邮件地址作为请求参数

2023-11-21

我在将 url 中的电子邮件地址传递到 symfony 应用程序时遇到一些问题。

网址看起来像

example.com/unsubscribe/email/[email protected]

它总是会导致一个sfError404Exception,除非删除句点。在进行了一些谷歌搜索后,我见过的唯一解决方案是 htaccess 由于存在句点而绕过了 url。但是,当我将建议的修复添加到 htaccess 时,如下所示:

# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !@.+    #skip email address
RewriteCond %{REQUEST_URI} \.epl$
RewriteCond %{REQUEST_URI} !\.html$ 
RewriteCond %{REQUEST_URI} !\.rhtml$
RewriteRule .* - [L]

我得到相同的 404。当我直接在 url 中使用前端控制器时,它也会返回 404(example.com/index.php/unsubscribe/email/[email protected])。我尝试将转义版本直接放入地址栏,例如example.com/unsubscribe/me%40example%2Ecom这有效,但仅在 Firefox 中有效,在其他地方无效。

我已经花了大约 2 个小时在论坛上回答谷歌搜索,此时我已经没有想法了。

有什么想法吗?

Thanks.

更新:这是routing.yml的相关部分:

unsubscribeform:
  url:  /unsubscribe/email/:email
  param: { module: subscribe, action: index }

Update:堆栈跟踪...看起来它没有得到任何路由信息来继续我的工作

404 | Not Found | sfError404Exception
Empty module and/or action after parsing the URL "/unsubscribe/email/[email protected]" (/).
stack trace

1. at ()
  in SF_SYMFONY_LIB_DIR/controller/sfFrontWebController.class.php line 44 ...
          41.
          42.       if (empty($moduleName) || empty($actionName))
          43.       {
          44.         throw new sfError404Exception(sprintf('Empty module and/or action after parsing the URL "%s" (%s/%s).', $request->getPathInfo(), $moduleName, $actionName));
          45.       }
          46.
          47.       // make the first request
2. at sfFrontWebController->dispatch()
  in SF_SYMFONY_LIB_DIR/util/sfContext.class.php line 159 ...
         156.    */
         157.   public function dispatch()
         158.   {
         159.     $this->getController()->dispatch();
         160.   }
         161.
         162.   /**
3. at sfContext->dispatch()
  in /home/web/htdocs/index.php line 10 ...
           7. require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'ProjectConfiguration.class.php');
           8.
           9. $configuration = ProjectConfiguration::getApplicationConfiguration(SF_APP, SF_ENVIRONMENT, SF_DEBUG);
          10. sfContext::createInstance($configuration)->dispatch();

11.


默认情况下,Symfony 对待. and /作为参数分隔符。
这使得匹配 url 变得非常容易,如下所示:

/some/path/:param.:ext

但对电子邮件地址没有帮助。

幸运的是,您可以覆盖.通过指定您自己的模式来分隔。
只需添加requirements下面一行到您的路由:

unsubscribeform:
  url:  /unsubscribe/email/:email
  param: { module: subscribe, action: index }
  requirements: { email: .+ }

The .+要求中是匹配任何内容的正则表达式。这.匹配任何字符,并且+表示匹配一个或多个。

(在 Symfony 1.4 中测试)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony:电子邮件地址作为请求参数 的相关文章

随机推荐

  • Python3 以网络摄像头 fps 处理并显示网络摄像头流

    如何读取相机并以相机帧速率显示图像 我想连续从网络摄像头读取图像 进行一些快速预处理 然后在窗口中显示图像 这应该以我的网络摄像头提供的帧速率 29 fps 运行 OpenCV GUI 和 Tkinter GUI 似乎太慢 无法以这样的帧速
  • MVC 使用 Html.CheckBoxFor 和 nullable Bool

    我有一个复选框 我想在与称为公共的字段相关的视图上显示该复选框 该复选框基本上说明特定行是否是公共的 在数据库中 这是一个位字段 但由于表以前的工作方式 它允许为空 我正在使用 Html CheckBoxFor 但它抱怨这个字段 因为在系统
  • 如何查找 int 数组中元素的索引?

    如何在 Java 类型数组中找到某个值的索引int 我尝试使用Arrays binarySearch在我的未排序数组中 它有时只给出正确的答案 Integer array 1 2 3 4 5 6 Arrays asList array in
  • std::fstream 缓冲与手动缓冲(为什么手动缓冲有 10 倍增益)?

    我测试了两种写入配置 Fstream缓冲 Initialization const unsigned int length 8192 char buffer length std ofstream stream stream rdbuf g
  • 使用 php 以人类可读的格式从数据库表中打印餐厅营业时间

    我有一张表格 上面列出了餐馆的营业时间 这些列是 id eateries id day of week start time 和 end time 每个餐馆在表中都会出现多次 因为每天都有一个单独的条目 有关更多详细信息 请参阅上一个问题
  • Math.random() 什么时候开始重复?

    我在 nodejs 中进行了这个简单的测试 我让它运行了一整夜 并且无法让 Math random 重复 我意识到这些值 甚至整个序列 迟早会重复 但是对于何时发生有合理的预期吗 let v for let i 0 i let r Math
  • .net PDF 查看器控件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在寻找适用于 WPF
  • 如何将 spring bean 注入(custructor)到 Mapstruct 的抽象映射器中?

    我有下面的映射器类 我想在其中使用CounterService 我正在尝试构造函数注入 但这不起作用并且null正在打印 Mapper componentModel spring uses CounterService class inje
  • 接口中的条件必需属性

    我想输入一个可以包含任何属性的对象 但如果它具有任何属性a b or c 它必须包含所有属性a b and c 换句话说 对象可以包含任何属性 但如果它包含a b or c它必须包含a b and c let something Somet
  • 如何修复 ValueError:不支持多类格式[重复]

    这个问题在这里已经有答案了 这是我的代码 我尝试计算 ROC 分数 但我遇到 ValueError 问题 不支持多类格式 我已经在寻找 sci kit learn 但它没有帮助 最后 我仍然有 ValueError 不支持多类格式 这是我的
  • OnTouchListener 和 OnClickListener 的区别

    我制作了一个应用程序 它实现了View OnTouchListener 但是当我将其上传到 Android Market Google Play 商店 时 我收到以下消息 此 apk 请求 1 个将用于 Android Market 的功能
  • 代码分割“import”破坏了 Jest 测试

    我正在使用 webpack 的代码分割功能 但 jest 似乎无法识别import 功能 import myModule then function myModule SyntaxError Unexpected token import
  • 在 Java 中,公开对象的成员是否是一个坏主意?

    我的应用程序中有一个数据类 我的应用程序永远不会用作公共 API 并且我将是我的项目中唯一开发代码的人 我正在努力节省每一盎司的处理器和内存电量 让我的数据类中的数据成员具有公共 受保护 默认保护以便我不必使用 getter 是一个坏主意吗
  • cocos2d iphone 5 4寸显示屏支持

    我一直在到处寻找这个 但没有运气 如何为 iPhone 5 的 4 英寸显示屏准备基于 cocos2d 的游戏 我的应用程序正在运行 但我想增强它以适应更大的 4 英寸显示屏 Cocos2d 使用自己的后缀来表示视网膜显示图像 对于 iPh
  • Numpy 多维度花式索引

    假设我有一个大小为 n x m x k 的 numpy 数组 A 和另一个大小为 n x m 的数组 B 其索引从 1 到 k 我想使用 B 中这个位置给出的索引来访问 A 的每个 n x m 切片 给我一个大小为 n x m 的数组 编辑
  • 当过滤范围为空时处理“未找到单元格”错误

    我对一个范围进行一些过滤 然后复制过滤后的范围 myRange SpecialCells xlCellTypeVisible Copy 一旦过滤器过滤掉我得到的所有案例 错误1004 未找到单元格 我正在寻找一种方法来检查 没有On Err
  • 如何创建表达式树来表示 C# 中的“String.Contains("term")”?

    我刚刚开始使用表达式树 所以我希望这是有道理的 我正在尝试创建一个表达式树来表示 t gt t SomeProperty Contains stringValue 到目前为止我已经得到 private static Expression L
  • Scala 下划线 - 错误:缺少扩展函数的参数类型

    我知道对此有很多问题 但我创建了一个简单的例子 我认为应该可以工作 但仍然不行 我不确定我明白为什么 val myStrings new Array String 3 do some string initialization this w
  • Django 1.2:如何将 pre_save 信号连接到类方法

    我试图在 django 1 2 项目的某些类中定义 before save 方法 我在将信号连接到 models py 中的类方法时遇到问题 class MyClass models Model def before save self s
  • Symfony:电子邮件地址作为请求参数

    我在将 url 中的电子邮件地址传递到 symfony 应用程序时遇到一些问题 网址看起来像 example com unsubscribe email email protected 它总是会导致一个sfError404Exception