2013-04-28 13 views
1

을 읽고 $_GET['ht'] AND $_GET['hht'] as /ht/hht을 읽었으나 이제는 URL에 추가 할 때 맞춤 값을 읽지 않습니다. 예를 들어 mydomain.com/ht/?smth=else - $_GET['smth']을 읽습니다. 어떻게 바꿀 수 있습니까? 내 .htaccess.htaccess가 맞춤 요청을 읽지 못했습니다.

:

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteBase/

    RewriteCond %{REQUEST_FILENAME} -f [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule .* - [L] 

    RewriteRule ^([a-zA-Z0-9-z\-]+)/([a-zA-Z0-9-z\-]+)$ index.php?ht=$1&hht=$2 
    RewriteRule ^([a-zA-Z0-9-z\-]+)/([a-zA-Z0-9-z\-]+)/$ index.php?ht=$1&hht=$2 
    RewriteRule ^([a-zA-Z0-9-z\-]+)$ index.php?ht=$1&hht=$2 
    RewriteRule ^([a-zA-Z0-9-z\-]+)/$ index.php?ht=$1&hht=$2 
</IfModule> 

<Files ~ "\.inc$"> 
Order allow,deny 
Deny from all 
</Files> 


<Files .htaccess> 
order allow,deny 
deny from all 
</Files> 
+1

는 재 작성에'QSA' 플래그를 추가합니다. – Wrikken

+0

@Wrikken 감사합니다. 작동했습니다! – Peter

답변

2

당신은 당신의 REGEX에 추가 "-z"를했습니다. 또한 마지막 두 규칙을 통합 할 수 있습니다. 또한 패턴에없는 두 번째 REGEX에서 변수를 선언하고 있습니다. 괄호 세트가 하나뿐이기 때문에 재귀없이 문자열의 시작과 끝을 일치 시키면 $2이 생성되지 않습니다.

는 대체 URI 쿼리 문자열한다 RewriteRule의 기존의 쿼리 문자열을 폐기하는 기본 동작을 포함하면 바르가

RewriteRule QSA|qsappend을 사용하여 유지하고, 새로 하나 생성과 를 교체합니다. [QSA] 플래그를 사용하면 쿼리 문자열 이 결합됩니다.

당신이 .htaccess 파일 중 하나 또는 섹션에있는 RewriteRule을 사용하는 경우 일치하는 사용 RewriteRule L|last

에 규칙 처리를 중지하려면

, 규칙이 얼마나 의 일부 이해를하는 것이 중요합니다 처리됨. 이것의 단순화 된 형태는 일단 규칙이 처리되면 재 작성된 요청을 URL 구문 분석 엔진 인 으로 돌려 보내서 처리 할 수 ​​있습니다. 재 작성된 요청으로 이 처리 될 수 있습니다. .htaccess 파일 또는 섹션이 다시 발생할 수 있으므로 룰셋을 다시 시작하여 을 다시 실행할 수 있습니다. 일반적으로 규칙 중 하나가 내부 또는 외부 리디렉션으로 인해 요청 프로세스가 다시 시작되는 경우이 문제가 발생합니다. (당신의 재 작성 URL을 추가 원래의 쿼리 문자열을 가지게됩니다, 쿼리 문자열 추가])

RewriteRule ^([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/?$ index.php?ht=$1&hht=$2 [QSA,L] 
RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?ht=$1 [QSA,L]