문제

나는 내 손에 닿지 않는 것처럼 보이는 문제를 해결하려고 노력하고 있지만 약간의 .htaccess 마법으로 해결할 수 있기를 바랍니다.

문제의 배경

현재 .htaccess 파일을 사용하여 URL을 예쁘게 만드는 MediaWiki 구현이 있습니다.mod_rewrite가 없는 기본 MediaWiki 구성에서 Wiki의 각 문서는 일반적으로 다음을 방문하여 액세스됩니다.

www.mywebsite.org/index.php?title=George_Clooney_(배우)

.htaccess(아래 코드)를 사용하면 다음으로 이동하여 동일한 페이지에 액세스할 수 있도록 이를 정리할 수 있습니다.

www.mywebsite.org/George_Clooney_(배우)

모두 정상적으로 작동하고 있습니다.내부적으로는 아무런 문제가 없습니다.

문제 요약

문제는 내 위키 트래픽의 상당 부분이 vBulletin에서 발생한다는 것입니다. vBulletin에는 회원 게시물의 URL을 자동으로 구문 분석하는 방법에 버그가 있습니다.위의 링크를 추가하면 vBulletin은 URL을 BB 코드 링크로 구문 분석하지만 끝 괄호는 생략합니다.실제로 최종 BB 코드는 일반적으로 다음과 같습니다.

[url]http://www.mywebsite.org/George_Clooney_(actor[/url])

안타깝게도 회원들은 일반적으로 이를 파악하지 못하고 링크를 통해 다음 위치에 존재하지 않는 페이지로 연결됩니다.

www.mywebsite.org/George_Clooney_(배우

내 질문

닫히지 않은 여는 괄호가 감지되면 다시 쓰기 규칙을 통해 닫는 괄호를 추가하는 것이 가능합니까?

도움을 주기 위해 우리 위키는 매우 엄격한 명명 형식을 따르며, 닫는 괄호 없이 여는 괄호가 있는 기사가 있는 상황은 예상하지 않습니다.모든 경우에 괄호 안의 단어는 기사 이름 끝에 위치합니다.기사 명명 규칙은 항상 다음 중 하나입니다.

기사_이름 또는 기사_이름_(유형)

따라서 "www.mywebsite.org/George_Clooney_(actor)"를 방문하려고 시도하는 잘못된 링크를 받으면 자동으로 "www.mywebsite.org/George_Clooney_(actor)"로 리디렉션하고 싶습니다.

내가 고려한 다른 가능한 경로는 404 페이지의 기사 제안 섹션을 코딩하는 것입니다.나는 이것이 좀 더 많은 작업이 될 것이라고 생각하지만 이 htaccess 계획이 제대로 작동하지 않을 경우 내가 가장 먼저 선택하는 솔루션이 될 것입니다.

현재 내 .htaccess 파일에 대해 가지고 있는 내용은 다음과 같습니다.

RewriteEngine On
Options +FollowSymLinks

# Require Subdomain
RewriteCond %{HTTP_HOST} ^mywebsite.org [NC]
RewriteRule ^(.*)$ http://www.mywebsite.org/$1 [L,R=301]

# Pretty URL
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/index.php [PT,L,QSA]

어떤 도움이라도 대단히 감사하겠습니다.htaccess와 올바른 정규식의 조합은 나에게 여전히 새롭고 마법 같은 것입니다.

도움이 되었습니까?

해결책

이 규칙을 다음과 같이 사용할 수 있습니다. 첫 번째 규칙 (바로 밑 RewriteEngine On 선):

RewriteRule ^(.*?\(.*?[^)])$ /$1) [R=301,L,NE]

이는 URL에 누락된 괄호가 하나만 있다고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top