2014-02-28 3 views
0

행운을 남기지 않고 .htaccess로 $ _GET 요청에서 일부 URL을 다시 쓰려고합니다.깨끗한 URL과 htaccess 요청 받기

어떻게 (왼쪽 = 원래 URL, 오른쪽 = 새 URL)

/?lang=en ---> /en/ 
/index?lang=en ----> /en/index 
/pageA?lang=de ----> /de/pageA 
/pageB/lang=es ----> /es/pageB 

에 대한 구문이는 htaccess로 파일에 수동으로 모든 페이지를 얻을 요청을 편집없이 할 수 있어요?

도움을 주셔서 미리 감사드립니다.

편집

이것은 URL

Options -Indexes +FollowSymlinks 
RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 


RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
RewriteRule^%1 [R,L,NC] 

RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule^%{REQUEST_URI}.php [L] 

그것은 단지 작동되는 코드 년대 말에 .PHP을 제거하기 위해 지금까지 내 코드입니다.

+0

'index? lang = en','pageA? lang = de'은 무엇입니까? 디렉토리입니까? 현재 .htaccess 내용을 표시하십시오. –

+0

index, pageA, pageB, pageC는 모두 페이지입니다. 파일은 루트 디렉토리에 표시됩니다. – Someone33

+0

당신은 아마도 이것을 생각할 것입니다. 내가 원하는 것은'/ en /'과 같은 URI에 입력 할 수 있고'lang = en'과 같은 쿼리 문자열로 서버 스크립트에 전달할 수 있다고 가정합니다. 따라서 실제로 깨끗한 URL을 백엔드 스크립트로 자동 작성합니다. –

답변

0

이 같은 뭔가 일할 수 :

RewriteRule ^([a-z]+)/([a-zA-Z]+)/$ /$2?lang=$1 [QSA] 
+0

불행히도 작동하지 않습니다. 내부적으로 + 외부 적으로 리디렉션되어야한다고 생각합니다. – Someone33

+1

변경하려면 주소 표시 줄에 URL이 필요합니까? – Quixrick

+0

예, URL이 깨끗해야합니다. – Someone33

0

이 내가 생각 해낸 것입니다 :

RewriteRule ^(([-A-Za-z0-9_]+)?(\?|\/)lang=([A-Za-z]{2}))$ redirect.php?page=$1 [L] 

편집 :

그런 다음, 깨끗한 URL로 리디렉션하려면 무엇을 당신은 아마 가고 싶은 하나의 중앙 PHP 페이지를 이동합니다. 당신이 여기 header("Location: ".$real_page); exit;

을 다음 가고 싶은 곳이 페이지에서 결정하는 예입니다 :

<?php 

// REDIRECT.PHP 

$page = $_GET['page']; 

$real_page = preg_replace('/([-A-Z0-9_]+)?(\?|\/)lang=([A-Z]{2})/i', '/$3/$1', $page); 

header("Location: ".$real_page); 
exit; 

편집 2 :

모든 withing에 htaccess로하지 엉망을 유지하려면 PHP 리디렉션을 사용하면 [R=302] 플래그를 사용할 수 있습니다.

RewriteRule ^([-A-Za-z0-9_]+)?(\?|\/)lang=([A-Za-z]{2})$ /$3/$1 [R=302] 

실제로 URL이 변경되어야합니다.

+0

작동하지 않습니다. 어쩌면 거기에 THE_REQUEST가 있어야하지만, 어디에 넣어야할지 모르겠다. – Someone33

+0

작동하지 않는 경우 다른 RewriteRules 위로 이동 해보십시오. 리디렉션 외에도 깨끗한 URL을 원할 경우이를 처리하는 방법을 반영하도록 내 게시물을 편집했습니다. – Quixrick

+0

어쩌면 .htaccess만으로 PHP 코드 전체를 뒤집을 필요는 없습니다. 그렇다면 .htaccess로만 검색하고 있습니다. 어쨌든 고마워! – Someone33