当前位置: 首页 > 知识库问答 >
问题:

转义期间(.)字符在mod_rewrite正则表达式

谭仰岳
2023-03-14

我当前使用此规则设置了一个.htaccess文件:

重写规则^([a-zA-Z0-9_-] )$ 用户\. php?用户=1美元[L]

正如预期的那样:mysite.com/joe变得mysite.com/user.php?user=joe

如何更改正则表达式以在可能的用户名中包含句点?

例如我想mysite.com/joe.bloggs去mysite.com/user=joe.bloggs

目前,这会导致404缺失页面错误。

我试过了([a-zA-Z0-9\._-])$user\。php?user=$1[L]但这会产生一个内部错误500(我认为这是由于一个无限循环:user.php被设计为在没有指定用户的情况下重定向到主页。)

我对这一切都很陌生(尤其是正则表达式)。谢谢你的帮助!

共有2个答案

松英喆
2023-03-14

<代码> 在字符类中没有特殊意义,因此不需要对其进行转义。

如果这没有帮助,请尝试将die("Test")放在user.php的开头。这将允许您查看错误是来自重写还是PHP文件。

童浩言
2023-03-14

首先检查请求的URL是否不是文件或文件夹。这将防止像/user.php这样的URL的重定向循环

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-.]+)$ user.php?user=$1 [L,QSA]
 类似资料:
  • 问题内容: 当匹配某些字符(例如换行符)时,可以使用正则表达式“ \\ n”或仅使用“ \ n”。例如,以下将字符串拆分为行数组: 但是以下内容同样适用: 我的问题: 上面两个是 完全 一样地工作,还是有细微的差别?如果是后者,能否举个例子,说明您得到不同的结果? 还是仅在[可能/理论]表现上有所不同? 问题答案: 在当前情况下没有区别。通常的字符串转义序列是在单个反斜杠的帮助下形成的,然后有效的

  • 问题内容: 我想使用来自用户的输入作为正则表达式模式来搜索某些文本。它可以工作,但是我该如何处理用户在正则表达式中放置有意义的字符的情况?例如,用户要搜索:正则表达式引擎会将(s)分组。我希望它像对待字符串一样对待它。我可以replace在用户输入上运行并将和 替换,但是问题是我将需要对每个可能的正则表达式符号进行替换。你知道更好的方法吗? 问题答案: 使用此功能: 4.2.3 re模块内容 转义

  • 问题内容: 我正在尝试在另一个字符串中替换字符串“ []”的第一个匹配项: aString.replaceFirst(“ []”,“等等”); 我收到错误:java.util.regex.PatternSyntaxException:索引1 []附近的未封闭字符类 [和]显然是元字符,但是当我尝试使用\来转义它们时,eclipse抱怨说这不是有效的转义序列。 我看过但找不到,我想念什么? 谢谢 问

  • 问题内容: Java或任何开放源代码库中是否有任何方法可以转义(不引用)特殊字符(元字符),以便将其用作正则表达式? 动态构建正则表达式非常方便,而不必手动转义每个字符。 例如,考虑一个简单的正则表达式,它匹配带小数点的数字,例如,以及以下代码: 毫不奇怪,以上代码产生的输出是: 也就是说,匹配项(但是“动态”构建的)不匹配(相反,它与文字字符串匹配)。 那么,有没有一种方法可以自动转义每个正则表

  • 我肯定这已经张贴之前,但我有麻烦找到一个答案。

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?