PHP/.htaccess를 사용하여 다른 SEO 시스템을 만들려고 합니다...
적용하려면 다음 규칙이 필요합니다.
- 확장자로 끝나지 않는 모든 URL을 포착해야 합니다(www.foo.com --> catch | www.foo.com/catch-me --> catch | www.foo.com/dont-catch.me --> 잡지 마세요).
- .php*(.php, .php4...)로 끝나는 모든 URL을 포착해야 합니다(규칙 #1의 예외).
- 모든 규칙은 일부 디렉터리에만 적용되어야 하며~ 아니다하위 디렉터리(지금까지는 / 및 /framework)에 있습니다.
- 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]
첫 번째 규칙 세트:
- GET 매개변수가 설정된 경우 이 규칙을 실행하지 마세요
uri
. 그렇지 않으면 매개변수를 추가한 후 대상 스크립트로 리디렉션할 때 루프가 발생합니다uri
. - URI에 가 포함되어 있으면
.
이 규칙 세트를 건너뜁니다. (특정 확장에 대해 보다 구체적인 규칙을 만들고 싶을 수도 있지만 이것이 가능합니다.) - URI가 제한된 디렉터리에 있는 경우 이 규칙 세트를 건너뜁니다.
index.php
(대상을 변경해야 할 수도 있음) 로 리디렉션 하고uri
GET 매개변수를 설정합니다.
두 번째 규칙 세트:
uri
매개변수가 설정된 경우 루프를 방지하려면 이 규칙 세트를 건너뛰세요..php
요청된 URI가 ,.php4
또는 이와 유사한 것으로 끝나면 계속 진행.php123
합니다 (~ 아니다리디렉션됨)index.php
(대상을 변경해야 할 수도 있음) 로 리디렉션 하고uri
GET 매개변수를 설정합니다.
mod_rewrite 규칙을 함께 적용하는 데 "마법사"가 필요하지 않습니다. 스스로 실험하고 jscott이 권장하는 가이드를 읽어보는 데 시간을 투자하세요.
하다훌륭한 설명을 원한다면 여기에서 이론 유형의 질문을 모두 물어보세요(답변자가 지식을 발전시키는 대신 프로젝트를 크라우드 소싱하는 것처럼 보이는 실용적인 유형의 질문과 반대).