2012-10-21 4 views
9

이 질문을 검색했지만 특정 요구 사항에 맞추기가 어려운 구체적인 답변 만 제공합니다. 가이 같이 나타나도록.htaccess는 쿼리 문자열을 경로로 다시 작성합니다.

http://www.example.org/test.php?whatever=something 

내가 그것을 다시 할 :

이의 내가 다시 시도하고있어 URL이 있습니다 가정 해 봅시다

http://www.example.org/test/something 

내가 어떻게 할 수 있습니까? 리디렉션하기 위해

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/?test/(.*?)/?$ /test.php?whatever=$1 [L] 

그리고 : 행하기 위해 내부적으로 /test/something 같은 요청이 당신은 당신의 문서 루트에 htaccess로 파일에이 규칙을 사용, /test.php?whatever=something의 내용이 제공됩니다 너무 재 작성에

+2

은 몇 가지 예입니다 : https://wiki.apache.org/httpd/RewriteQueryString –

답변

19

더 멋진 찾고 하나에 쿼리 문자열 URL :

여기
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /test\.php\?whatever=([^\&\ ]+) 
RewriteRule ^/?test\.php$ /test/%1? [L,R=301] 
+0

물론 완벽한, 감사합니다! – UserIsCorrupt

+0

위의 코드를 사용하여 후행 쿼리 문자열에 문제가있는 경우 마지막 규칙 끝에 후행 물음표를 추가해야하는 경우 여기에 업데이트 된 코드 'RewriteCond % {THE_REQUEST}^[AZ] {3, 9} \ /test\.php\?whatever = ([^ \ & \] +) RewriteRule^/? test \ .php $/test/% 1? [L, R = 301]' –

+0

동일한 규칙을 사용하고 있지만 URL이 http://example.com/directory1/directory2/login.php?id=8이고 URL이 http : //example.com/directory1/directory2/login/8 해결 방법 알려주세요. –

관련 문제