2012-08-28 4 views
1

를 조회 정상 URL을 리디렉션 htaccess로 :내가 형태의 URL을 문자열을

www.example.com/r.php?deb=abc&id=1234 

그리고 다른 URL :

www.example.com/r/12bcd-qsqs-343-wdwd/1234 
I가 다시 할

www.example.com/r/abc/1234 

을 다음과 같이 다시 써야합니다.

www.example.com/r.php?abc_id=12bcd-qsqs-343-wdwd&id=1234 

두 규칙 모두 .htaccess에서 처리해야합니다. 어떤 제안? 불행하게도이 규칙, 첫 번째 $ _GET 매개 변수는 항상 뎁있을 것

RewriteRule (.*)/(.*)/(.*)$ path_to_php_files/$1.php?deb=$2&id=$3 [QSA,L,NC] 

나는 당신이 DirectoryIndex에이 corectly 설정이 희망 :

+0

패스를 모두 자신의 스크립트에 그 PHP 스크립트 처리 한 매개 변수로 URI 내부보다. 이는 실행중인 웹 서버의 특정 성이 훨씬 적고 융통성이 있습니다. 이는 일반적으로 단일 또는 아주 적은 수의 규칙 만 필요합니다. 비교 : [symfony2 rewrite rules .htaccess app.php] (http://stackoverflow.com/questions/11149526/symfony2-rewrite-rules-htaccess-app-php) – hakre

답변

1

리디렉션 할 URI는 모두 비슷하지만 두 번째 URI는 첫 번째 쿼리 매개 변수에 하이픈 -이 있어야합니다.

mod_rewrite를 사용하고 httpd.conf을 통해 .htaccess로 다음 .htaccess에서 DOCUMENT_ROOT 디렉토리에이 코드를 넣어 :

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^r/([^-]+)/(.+)/?$ r.php?deb=$1&id=$2 [L,QSA] 

RewriteRule ^r/([a-z0-9-]+)/(.+)/?$ r.php?abc_id=$1&id=$2 [L,QSA,NC] 
+0

작은 변화에 대한 도움을 주셔서 감사합니다. 작동하도록 만들었지 만 지금 문제는 로컬 호스트에서 작동하지만, 서버에서 전송할 때 가상 호스트를 실행하고있었습니다. 작동하지 않을 수 있습니까? –

+0

서버에서 .htaccess를 사용하도록 설정했는지 확인한 다음 .htaccess가 DOCUMENT_ROOT 디렉터리에 올바르게 놓여 있는지 확인하십시오. 모든 것이 맞다면 위의 2 RewriteRule 행에'R' 플래그를 추가하여 서버의 최종 URI를 확인하십시오. – anubhava

+0

고마워요 :) 제가 소셜 사이트 또는 기타 무엇이나 연락 할 수있는 방법이 있습니까? –

1

같은 것을보십시오. 나는 당신이 동적 링크가있는 경우

www.example.com/r/abc/1234 
www.example.com/r/12bcd-qsqs-343-wdwd/1234 

당신이 2 개 개의 다른 $ _GET 매개 변수에 ABC와 12bcd-qsqs-343-wdwd을 delivrer 수 있다고 생각하지 않습니다.

+0

RewriteRule이 시작 슬래시와 일치하지 않기 때문에 작동하지 않습니다. '/'. – anubhava

+0

예, 고맙습니다, 제거했지만 작동해야합니다. – Cosmin

+0

실제로 OP가 2 개의 다른 쿼리 매개 변수를 사용하여 2 가지 다른 방법으로 리디렉션하려고한다는 것을 알게되면. – anubhava