我试图清理我们的搜索引擎优化,捕获非规范的URL,正在被谷歌索引。
下面是我们的一个非规范URL的示例
https://www.umpqua.edu/184-about-ucc/facts-visitor-info?start=1 我可以在HTACCESS文件中使用这个RegEx (见下文)捕获它,但它也禁用了我想要工作的其他URL。它用/NUMBER-捕获URL。这个数字的长度是2-3个字符.
/([0-9]{2,3})-所以我想让它更独特。我试过这个(下面)但没有成功。我希望用edu/NUMBER-捕获URL
(edu)/([0-9]{2,3})-我也试过
(edu/)([0-9]{2,3})-这是我的全部HTACCESS条目:
RewriteCond %{REQUEST_URI} ^(edu)/([0-9]{2,3})-$
RewriteRule .* index.php [G]发布于 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路径的开始。例如:
RewriteRule ^\d{2,3}- - [G]这需要接近根.htaccess文件的顶部。
\d只是[0-9]的缩写。注上述指令中有3个参数,用空格分隔。
^\d{2,3}- ...与URL-path-相匹配的图案.替换字符串(在本例中是单个hyphen)[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路径的开头。
https://stackoverflow.com/questions/72452269
复制相似问题