从 htaccess 中的 URL 中删除 ID

从 htaccess 中的 URL 中删除 ID

我尝试自己做这件事,但我对正则表达式还不够熟悉。

我有这个网址:

http://[DOMAIN]/[category]/27466-some-article-is-here

它将重定向到以下 URL:

http://[DOMAIN]/[category]/some-article-is-here

我只是想从 URL 中删除 ID。类别可以是任何我想保留的内容。

我如何实现这个目标?

更新:我将@taduuda 的重定向调整为:

RewriteRule ^(.*)\/[\d]*\-(.*)$ $1/$

使用测试工具看起来不错,但这在我的 wordpress 网站上仍然不起作用。

我的.htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# BEGIN - Custom Redirects
RedirectMatch 301 /heute(.*) /$1
RewriteRule ^(.*)\/[\d]*\-(.*)$ $1/$2
# END - Custom Redirects

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

</IfModule>
# END WordPress

答案1

不确定这是否适用于您拥有的每个 URL,但这应该会为您提供一个工作基础。请注意,这专门检查 5 位 ID。如果您希望它更灵活,只需更改{5}为不同的限定符,如*。另请注意,这可能会匹配您不想重定向的 URL。

* 量词 - 匹配零次至无限次,尽可能多次,根据需要返回(贪婪)

你的规则:

RewriteEngine on
RedirectMatch 301 ^(.*)\/[\d]{5}\-(.*)$ $1/$2

或者使用更精确的变体来避免不必要的重定向:

RewriteEngine on
RedirectMatch 301 ^(.*example\.com\/.+)(?:\/[\d]{5})\-(.*)$ $1/$2

既然您提到您是正则表达式的新手,那么这里有一些工具可以帮助您入门:

在线正则表达式构建/测试工具:regex101.com

在线.htaccess 重写测试工具:htaccess.madewithlove.be

相关内容