$2
은 해당 캡처 그룹이 없으므로 항상 비어 있습니다.
2. 귀하의 규칙은 .php 확장자가 요청 된 URL 끝에 추가 된 URL에서만 작동합니다. 두 번째 URL 예제에서는 별도의 규칙이 필요합니다.
RewriteEngine on
# 1) add .php file extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
# 2) more complex case of adding .php extension
# will work with URLs like
# /overview/something/here => /overview/something.php?flag=here
# /overview/1 => /overview.php?flag=1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^(.+)/([^/]+)$ $1.php?flag=$2 [QSA,L]
# 3) Another type of URL
# will work with URLs like
# /overview/something/here => /overview.php?flag=something/here
# /overview/1 => /overview.php?flag=1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f
RewriteRule ^([^/]+)/(.+)$ $1.php?flag=$2 [QSA,L]
나는이 방법에 대한 규칙을 제공 한 :
규칙 # 2 처리 할 /overview/something/here
=>/overview/something.php?flag=here
(이전의 모든 세그먼트 파일 이름으로 처리됩니다 동안 마지막 세그먼트가 매개 변수로 취급됩니다);
규칙 # 3은 /overview/something/here
=>/overview.php?flag=something/here
을 처리합니다 (첫 번째 세그먼트는 파일 이름으로 처리되고 다른 모든 세그먼트는 매개 변수로 처리됩니다).
/overview/1
=>/overview.php?flag=1
재기록
둘 다에 의해 처리 될 수있다 (# 2, # 3).