당신이 표시하는 rewriteRule
은 반전됩니다. 긴 양식의 수신 URL을 가져 와서 쿼리 문자열 버전 (?
)으로 변환합니다. "나는대로 표시, 그것을 다시 할 :"
경우]
표시하고 다시 쓰기는 일반적으로 다른 것들
이제 문제는 당신이 말할 때 무엇을 의미합니까입니다 '디스플레이'당신이 자신의 브라우저에서 사용자가 볼 수있는 URL입니다 : 수신 된 HTML이 올바른 표시를 포함하도록
- 는 응용 프로그램에서 URL을 작성하는이 방법을 밀어,이 mod_rewrite를 함께 할 수 없다
- 선택적으로 mod_rewrite로 HTTP 리다이렉션을 수행 할 수 있습니다. 따라서 이전 구문 (
cheap-call-single.php?country=ALBANIA
)을 감지하면 사용자를 올바른 방향으로 리디렉션하고 브라우저에서 요청을 다시 실행합니다. 그러면 서버에 cheap-international-calls-ALBANIA.php
파일이 있어야합니다. 서버, 그렇지 않으면 마지막 404)
- 서버에이 파일이 없으면 (즉, 가지고있는 파일은
cheap-call-single.php
입니다.) 노출 된 rewriteRule이 올바로 작동하고 1 단계로 돌아 가면 오른쪽에 표시해야하는 응용 프로그램입니다 HTML 쪽의 URL. 당신이 정말로 cheap-international-calls-ALBANIA.php
이 있고 응용 프로그램이 쿼리 문자열 매개 변수를 기반으로,이 파일에 cheap-call-single.php
을 사용하여 들어오는 요청을 다시 할 경우
지금, 당신은 몇 가지 문제가 있습니다. 요청의 쿼리 문자열 부분에 규칙을 작성하는 것은 항상 복잡하며 쿼리 문자열 인수는 순서에 관계없이 urlencoding으로 작성 될 수 있습니다. 기본적으로 rewriteRules는 쿼리 문자열 부분을 사용하지 않습니다.
이는 뭔가 같은 :
RewriteCond %{REQUEST_FILENAME} cheap-call-single\.php [NC]
RewriteCond %{QUERY_STRING} (^|&|%26|%20)country(=|%3D)([^&]+) [NC]
RewriteRule .* /cheap-international-calls-%3.php [L,R]
테스트되지 않은 (확실하지 \.
용), 아직 urlencoded를 할 것이다 사실에게 국가 단어의 각 문자를 관리하지, 그리고의 upcase를 관리하지 국가 이름. 대문자로 변환하려면 RewriteMap이 필요합니다. 하지만 이미 내 두통이있어,이게 진짜 필요한거야?
'하지만 이것은 작동하지 않습니다.'무엇이 작동하지 않습니까? 변환하지 않은 첫 번째 URL에 액세스하거나 두 번째 URL에 액세스 할 때 작동하지 않습니다. 두 번째 URL에 액세스 할 때 게시 한 코드가 작동해야합니다.위의 어느 것도 우리가 크리스탈 볼을 가지고 있지 않기 때문에 가능한 한 서술 적이라는 것을 설명하지 못한다면 ... – Prix
위의 내용을 내 폴더의 루트에있는 htaccess 파일에 붙여 넣었습니다. URL이 표시되는 방식에는 아무런 차이가 없습니다. –