.htaccess URL 재작성에 대한 도움이 필요합니다.

.htaccess URL 재작성에 대한 도움이 필요합니다.

PHP/.htaccess를 사용하여 다른 SEO 시스템을 만들려고 합니다...

적용하려면 다음 규칙이 필요합니다.

  1. 확장자로 끝나지 않는 모든 URL을 포착해야 합니다(www.foo.com --> catch | www.foo.com/catch-me --> catch | www.foo.com/dont-catch.me --> 잡지 마세요).
  2. .php*(.php, .php4...)로 끝나는 모든 URL을 포착해야 합니다(규칙 #1의 예외).
  3. 모든 규칙은 일부 디렉터리에만 적용되어야 하며~ 아니다하위 디렉터리(지금까지는 / 및 /framework)에 있습니다.
  4. htaccess는 PHP에서 작업할 수 있도록 입력된 URL을 GET 값으로 보내야 합니다.

모드 재작성 마법사가 도움이 될까요?

편집하다:

좋습니다. 제안된 게시물을 읽은 후 이것을 생각해 냈지만 루프에 걸린 것 같습니다... 누구든지 도와주실 수 있나요?

<IfModule mod_rewrite.c>
RewriteEngine On
# 1
RewriteCond %{REQUEST_FILENAME} !\.[^/]+$ [OR]
# 2
RewriteCond %{REQUEST_FILENAME} \.php.*$
# 4
RewriteRule ^(.*)$ http://localhost/seo-urls/seo-urls-mapper.php%3Frequested=$1?%{QUERY_STRING}
</IfModule>

크리스마스 연휴 동안 이 작업을 완료하고 싶어서 현상금을 추가합니다 :) 도와주셔서 감사합니다. 즐거운 휴일 보내세요!

답변1

다음을 시작점으로 사용해 보세요.

RewriteEngine On

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  !\.(.*)
RewriteCond %{REQUEST_URI}  !^/(framework|restricted)/
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

RewriteCond %{QUERY_STRING} !^uri
RewriteCond %{REQUEST_URI}  \.php.?$
RewriteRule .* /index.php?uri=%{REQUEST_URI} [L,QSA]

첫 번째 규칙 세트:

  1. GET 매개변수가 설정된 경우 이 규칙을 실행하지 마세요 uri. 그렇지 않으면 매개변수를 추가한 후 대상 스크립트로 리디렉션할 때 루프가 발생합니다 uri.
  2. URI에 가 포함되어 있으면 .이 규칙 세트를 건너뜁니다. (특정 확장에 대해 보다 구체적인 규칙을 만들고 싶을 수도 있지만 이것이 가능합니다.)
  3. URI가 제한된 디렉터리에 있는 경우 이 규칙 세트를 건너뜁니다.
  4. index.php(대상을 변경해야 할 수도 있음) 로 리디렉션 하고 uriGET 매개변수를 설정합니다.

두 번째 규칙 세트:

  1. uri매개변수가 설정된 경우 루프를 방지하려면 이 규칙 세트를 건너뛰세요.
  2. .php요청된 URI가 , .php4또는 이와 유사한 것으로 끝나면 계속 진행 .php123합니다 (~ 아니다리디렉션됨)
  3. index.php(대상을 변경해야 할 수도 있음) 로 리디렉션 하고 uriGET 매개변수를 설정합니다.

mod_rewrite 규칙을 함께 적용하는 데 "마법사"가 필요하지 않습니다. 스스로 실험하고 jscott이 권장하는 가이드를 읽어보는 데 시간을 투자하세요.

하다훌륭한 설명을 원한다면 여기에서 이론 유형의 질문을 모두 물어보세요(답변자가 지식을 발전시키는 대신 프로젝트를 크라우드 소싱하는 것처럼 보이는 실용적인 유형의 질문과 반대).

관련 정보