.htaccess 正则表达式需要使尾随正斜杠可选

2023-11-23

我需要在我的 RewriteRule 中包含一个可选的尾部正斜杠,即 /

到目前为止我所拥有的是

RewriteRule ^([a-zA-Z0-9]+)$ u.php?$1|$2

例如,哪个工作正常http://foo.bar/abcde将重定向到http://foo.bar/u.php?abcde并处理可能存在的任何查询字符串参数。

我需要做的是采取http://foo.bar/abcde/(带有尾部正斜杠)并重定向到http://foo.bar/u.php?abcde

因此,如果它存在,我需要在 RewriteRule 中删除 $1 中的最后一个正斜杠。我该怎么做呢?我是 apache 的新手,尝试了许多不同的正则表达式规则,但无法得到正确的结果。


就放/?之前$在你的模式的最后:

RewriteRule ^([a-zA-Z0-9]+)/?$ u.php?$1

但我宁愿建议您只允许一种拼写(带或不带尾部斜杠)并重定向另一种拼写:

# remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ /$1 [L,R=301]
# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .*[^/]$ /$0/ [L,R=301]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.htaccess 正则表达式需要使尾随正斜杠可选 的相关文章

  • 在 Java/GWT 中解析用户时间输入

    解析用户在 GWT 中的文本字段中键入的时间的最佳方法是什么 默认时间格式要求用户完全按照区域设置指定的时间格式输入时间 我想要更加灵活 因为用户可以通过多种不同的方式输入时间 例如 8 8p 8pm 8 15pm 13 15 1315 1
  • 基于Java模式分割字符串

    您好 我有以下模式的日志文件 2014 03 06 03 21 45 432 ERROR mfs pool 3 thread 19 dispatcher StatusNotification Error processing notific
  • 只有一组多次捕获

    String 50 60 70 50 1 7 9 51 5 9 10 Want 9 51 Tried G K d Result 1 7 9 51 看来您正在使用 PCRE 正则表达式来获取可以在内部数学运算符前面添加的数字 没有内在的 Us
  • 如何匹配与 Perl 中的特定模式不匹配的字符串?

    我知道使用正则表达式很容易匹配除给定字符之外的任何内容 text ab ac ad text s c g Match anything except c text is now c 我不知道如何 排除 字符串而不是字符 我如何 匹配除 ac
  • 如何在正则表达式中编写可选单词?

    我想编写一个识别以下模式的 java 正则表达式 abc def the ghi and abc def ghi 我试过这个 abc def the ghi 但是 它没有识别第二种模式 我哪里出错了 abc def the ghi 删除多余
  • 匹配一对未转义的平衡分隔符

    如何匹配一对不被反斜杠转义的平衡分隔符 本身不被反斜杠转义 无需考虑嵌套 例如 对于反引号 我尝试了此操作 但是转义的反引号无法按转义的方式工作 regex lt lt hello how are you gt 1 how expected
  • 替换第二个和第三个下划线之间的任何内容

    我有一个 PowerShell 脚本行 它用 替换 删除 第二个和第三个下划线之间的字符 get childitem pdf rename item newname name replace p L p L 例子 12345 00001 L
  • .htaccess 用问号“?”重写 URL仅适用于 1 个特定 URL

    几周前我已经开始了一个话题 但我现在遇到了一个与旧问题非常相似的新问题 htaccess 用问号 重写 URL https stackoverflow com questions 18543194 htaccess rewrite url
  • 使用 htaccess 阻止特定文件扩展名?

    我使用此代码将所有请求发送到单个 php 文件 RewriteEngine On RewriteCond REQUEST FILENAME f RewriteCond REQUEST FILENAME d RewriteRule myfil
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • Oracle SQL——从字符串中删除部分重复项

    我有一个表 其中有一列包含字符串 如下所示 static text here 1abcdefg1abcdefgpxq 从这个字符串1abcdefg重复两次 所以我想删除该部分字符串 然后返回 static text here 1abcdef
  • 正则表达式从 img 标签获取 src 值

    我正在使用以下正则表达式来获取src第一个的值imgHTML 文档中的标签 string match src
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • 在 Google 表格中批量查找并替换正则表达式

    是否有函数 脚本或插件可以将大量正则表达式替换应用于 Google 表格中的一系列数据 我有一张包含地址列表的工作表 另一张工作表在两列中包含几十对正则表达式 例如 St 和 Street 我想替换地址中第一列短语的所有实例列出另一个中相应
  • 从“class”名称中删除/替换不需要的前缀信息

    我正进入 状态style从后端 它带有不需要的前缀 我会替换没有前缀的相同内容 正确的方法是什么 这就是我得到的
  • 如何使用Java中的正则表达式删除字符串中的反斜杠?

    如何使用Java中的正则表达式删除字符串中的反斜杠 例如 hai how are you 我只想要 hai how are you str str replaceAll or str str replace replaceAll 将第一个参
  • 不允许连续点的正则表达式

    我有一个正则表达式允许字母数字 下划线和点 但不允许连续点 2 a zA Z0 9 我现在还需要允许在字符串的第一个和最后一个字符中使用点 我怎样才能做到这一点 您可以像这样使用它和额外的前瞻 a zA Z0 9 不允许 开始时 不允许有
  • 从 Laravel 的 URL 中删除 index.php

    我正在 Linux Mint 中使用 Laravel 5 5 12 我正在使用 LAMP 堆栈 我想删除index php来自网址 我的mod rewrite已启用阿帕奇模块 My htaccess文件位于public文件夹 它包含以下代码
  • 如何使用正则表达式限制小数点之前/之后/小数点以及整体的位数?

    我正在尝试检查数值是否具有特定数量的数字 总共不应超过 19 位数字 小数点前不能超过17位 整数部分 小数点后不得超过 4 位 小数部分 可以有小数点也可以没有 前面可以有 或 或没有 有效示例 1 1 0 0 1234567890123

随机推荐