htaccess의 URL에서 ID 제거

htaccess의 URL에서 ID 제거

나는 이것을 직접 시도했지만 정규식을 사용하는 초보자입니다.

다음 URL이 있습니다.

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과 일치할 수도 있습니다.

* 수량자 — 0번과 무제한 사이의 일치, 가능한 한 많은 횟수, 필요에 따라 돌려주기(탐욕)

귀하의 규칙:

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

또는 원치 않는 리디렉션을 방지하기 위한 보다 정확한 변형:

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

정규식을 처음 사용한다고 말씀하셨으므로 시작하는 데 도움이 되는 몇 가지 도구는 다음과 같습니다.

온라인 Regex 구축/테스트 도구:regex101.com

온라인 .htaccess 재작성 테스트 도구:htaccess.madewithlove.be

관련 정보