regex - 将所有以 0x 开头的请求重定向到index.html

标签 regex apache .htaccess redirect mod-rewrite

我的网站将类似于 example.com/0xETHEREUMADDRESS

所以我想将所有以 0x 开头的请求重定向到 INDEX.HTML 并且 index.html 已经有了其余的代码工作。

我需要 .htaccess 代码将所有以 0x 开头的内容重定向到 index.html。 这是我尝试过的 .htaccess 规则文件。

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule (0x*)$ /index.html [L,R=302]

最佳答案

RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule (0x*)$ /index.html [L,R=302]

正则表达式 (0x*)$ 匹配结尾 0, 0x, 0xx0xxx 等。它与以 0x 开头的 URL 不匹配,因此这不会匹配所需的 URL。 * 字符是一个正则表达式量词,它重复前面的标记 0 次或多次。也不需要捕获组(括号)。

如果规则仅匹配以 Ox 开头的 URL,则检查 URL 的条件不是 /index.html 因此是多余的。

以下内容将满足您的要求:

RewriteRule ^0x /index.html [R=302,L]

^ 是字符串起始 anchor ,因此请求的 URL 必须以 0x 开头。请注意,RewriteRule模式匹配的 URL 路径不以斜杠开头。

但是,我想知道您是否真的想“重定向”用户? (就像在外部 HTTP 重定向中一样 - 就是这样。)重定向将丢失原始 URL 并将 /index.html 暴露给您的用户。

改为内部“重写”

但是,如果您希望内部重写请求,以便 index.html 可以分析请求的 URL(如您所说,“index.html”)。 html 已经包含了其余工作的代码”)并将 /0xETHEREUMADDRESS 保留在浏览器地址栏中,然后删除 R=302 标志和斜杠前缀在替换字符串上。例如:

RewriteRule ^0x index.html [L]

引用:

关于regex - 将所有以 0x 开头的请求重定向到index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75502070/

相关文章:

正则表达式:用否定解决正则表达式

php - 链接到已经具有永久重定向的旧页面

.htaccess RewriteRule 使 2 个 URL 可用于同一页面

java - MultiValueMap 获取值

ruby-on-rails - 如何让 Rails、SSL 和 Apache 发挥良好的作用?

.htaccess - 如何通过 .htaccess 使用通配符禁止主机名

javascript - 如果后面跟着其他表达式 JS,则拒绝完整的 RegEx

regex - 匹配数字的正则表达式

regex - 使用 `find` 命令查找带有 CJK 字符的文件的正则表达式是什么?

java - android - android studio 模拟器中的 SSL 问题,在手机上工作正常