首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.htaccess中的重写规则匹配URL路径中与域名直接后面的数字

使用.htaccess中的重写规则匹配URL路径中与域名直接后面的数字
EN

Stack Overflow用户
提问于 2022-05-31 17:59:31
回答 1查看 32关注 0票数 1

我试图清理我们的搜索引擎优化,捕获非规范的URL,正在被谷歌索引。

下面是我们的一个非规范URL的示例

代码语言:javascript
复制
https://www.umpqua.edu/184-about-ucc/facts-visitor-info?start=1 

我可以在HTACCESS文件中使用这个RegEx (见下文)捕获它,但它也禁用了我想要工作的其他URL。它用/NUMBER-捕获URL。这个数字的长度是2-3个字符.

代码语言:javascript
复制
/([0-9]{2,3})-

所以我想让它更独特。我试过这个(下面)但没有成功。我希望用edu/NUMBER-捕获URL

代码语言:javascript
复制
(edu)/([0-9]{2,3})-

我也试过

代码语言:javascript
复制
(edu/)([0-9]{2,3})-

这是我的全部HTACCESS条目:

代码语言:javascript
复制
RewriteCond %{REQUEST_URI} ^(edu)/([0-9]{2,3})-$
RewriteRule .* index.php [G]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-02 00:26:19

添加"edu“只是我想让RegEx更有选择性。所以,当我使用这个表达式/([0-9]{2,3})-时,它工作得很好,但它也与这个url匹配。/component/weblinks/weblink/239-external-links/…,但它不应该。

关于edu的重要之处在于它是在URL路径开始之前。(但它不是URL路径的一部分,而是Host头的末尾部分。)在这种情况下,只需将regex锚定到URL路径的开始。例如:

代码语言:javascript
复制
RewriteRule ^\d{2,3}- - [G]

这需要接近根.htaccess文件的顶部。

\d只是[0-9]的缩写。注上述指令中有3个参数,用空格分隔。

  1. ^\d{2,3}- ...与URL-path
  2. -相匹配的图案.替换字符串(在本例中是单个hyphen)
  3. [G] ) ..。旗子。在本例中,G表示gone (缩写为gone)

以上内容将为以2或3位数开头的任何URL路径提供一个"410 Gone“,后面跟着一个连字符。替换字符串中只有一个连字符来显式表示“无替换”。在这里使用index.php是多余的,因为它被忽略了。

注意,在RewriteRule模式中使用.htaccess时,URL路径上没有斜杠前缀。

您不需要单独的条件(RewriteCond指令)--在RewriteRule指令本身中可以更容易、更有效地执行比较。

因此,上面的内容将阻止/184-about-ucc/facts-visitor-info?start=1,而不是/component/weblinks/weblink/239-external-links/...,因为第二个URL中的3位数字并不发生在URL路径的开头。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72452269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档