.htaccess를 사용하여 6자리 숫자 URL을 스크립트로 보내지만 다른 모든 잘못된 URL을 404로 처리할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/73123

  •  09-06-2019
  •  | 
  •  

문제

.htaccess를 사용하여 6자리 URL을 모두 스크립트로 전송하여 처리하지만 다른 모든 잘못된 URL은 오류 404로 처리할 수 있습니까?

예를 들어:

http://mywebsite.com/132483

다음 주소로 전송됩니다:

http://mywebsite.com/scriptname.php?no=132483

하지만

http://mywebsite.com/132483a or
http://mywebsite.com/asdf

404 오류로 처리됩니다.

현재 사용자 정의 PHP 404 스크립트를 통해 이 작업을 수행하고 있지만 다소 복잡합니다.내 생각에는 .htaccess가 더 우아한 솔루션일 수 있지만 그것이 가능한지 여부는 아직 알 수 없습니다.

도움이 되었습니까?

해결책

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^([0-9]{6})$ scriptname.php?no=$1 [L]
</IfModule>

깨끗한 URL을 보존하려면

http://mywebsite.com/132483

scriptname.php를 제공하는 동안 [L]만 사용하세요.[R=301]을 사용하면 scriptname.php?no=xxx로 리디렉션됩니다.

이 정보가 유용할 수도 있습니다. http://www.addbytes.com/download/mod_rewrite-cheat-sheet-v2/pdf/

다른 팁

htaccess 파일에 다음을 입력하세요.

RewriteEngine On
RewriteRule ^([0-9]{6})$ /scriptname.php?no=$1 [L]

첫 번째 줄은 mod_rewrite 엔진을 켭니다.() 괄호는 내용을 $1에 넣습니다. 연속적인 ()는 $2, $3...를 채웁니다.등등.[0-9]{6}는 0-9 문자만 포함하는 정확히 6자 길이의 문자열을 찾습니다.

끝에 있는 [L]은 이것을 마지막 규칙으로 만듭니다. 적용되면 규칙 처리가 중지됩니다.

아, ^와 $는 들어오는 URI의 시작과 끝을 표시합니다.

도움이 되었기를 바랍니다!

네, mod_rewrite를 사용하면 가능합니다.온라인에는 좋은 mod_rewrite 튜토리얼이 많이 있으며, 빠른 Google 검색을 통해 즉시 답변을 찾을 수 있습니다.

기본적으로 당신이 원하는 것은 당신이 사용하는 정규 표현식이 다른 문자가 아닌 숫자만 찾고 길이가 6인지 확인하는 것입니다.그런 다음 캡처한 번호를 사용하여 scriptname.?no=로 리디렉션됩니다.

도움이 되었기를 바랍니다!

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