2013-02-23 7 views
-1

안녕하십니까,이 사람이 쉽게 될 수 있기를 바랍니다. 나는 인덱스를 제거하기 위해 노력하고있어 첫 번째 (기본) 문제 : .htaccess는 템플릿으로 전달하기 전에 PATH_INFO 변수를 비워 둡니다. URL에서 index.php를 제거하지 마십시오

어쨌든 .. 당신을 위해 두 개의 파트너 사를 얻었다 (일찍 I을 나는 왜 난?! 아직 커피가 없었어요). PHP는 내 링크에서 (불가능한 덕분에 hostgator :) :)) 옆에있을 것으로 보인다. 검색을 많이 한 후에/page가 /index.php/page로 리다이렉트하는 지점까지 갔다. 이제 이것은 아무것도 아닌 것보다 낫지 만 물론 이상적이지는 않습니다. 그리고 그것을하기 위해 [R]을 사용해야했습니다. 내 htaccess로는 다음과 같습니다

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$    index.php/$1 [R,L] 

제 (하드) 문제 내가 URL에서 index.php를 제거하지만 여전히 확인 적절한 페이지 컨트롤러를 만들기 위해 멀리 찾을 필요합니다 (무엇 페이지입니다 즉, url)이 표시됩니다. 나는 var를 잡고 적절한 페이지를 표시하기 위해 PATH_INFO를 사용하고 있으며 index.php가있을 때 작동합니다.

하지만 마지막 RewriteRule에서 R을 꺼낼 때 어떤 이유로/페이지는 항상 기본 index.php 템플릿으로 설정됩니다. 그것은 .htaccess 또는 내 사이트가 페이지를 처리하기 전에 PATH_INFO를 비워서 다시 쓰는 것과 같습니다. 나는 전에 PATH_INFO 에 잠길 필요가 있다고 생각합니다. .htaccess가 그것을 다시 씁니다.

일부 테스트의 경우 나는 var_dump(path_segments());에 머물러 있으며 /index.php/page에 다음을 제공합니다 : array(2) { [0]=> string(0) "" [1]=> string(10) "proper-page" }. 그러나 R을 위의 재 작성 규칙에서 빼내어/page를 사용하지 않고 액세스하면 다음과 같이 나타납니다. array(2) { [0]=> string(0) "" [1]=> string(0) "" }.


이제는 쉬운 방법이 있다면 두 번째 문제에 대해 걱정할 필요가 있는지 알지 못합니다. 그러나 적어도 그것은 지금 내가 알아 내려고하는 모든 것입니다. 내가 얻을 수있는 모든 도움을 감사하십시오!

답변

1

그런 다음 두 가지 옵션이 있습니다. 어느 쪽이든 당신은 당신에게 GET 매개 변수로 경로를 제공하기 위해 RewriteRule의를 적용하여 PATH_INFO를 사용하여 건너 뜁니다

RewriteRule ^(.*)$  index.php?path=$1 [L,QSA] 

따라서 지금 $_GET["path"]를 사용합니다.

$_SERVER["PATH_INFO"]을 사용하거나 origianl 수신 경로를 $_SERVER["REQUEST_URI"]에서 전환하십시오. 때로는 REDIRECT_PATH_INFO, 확인 print_r($_SERVER);과 같은 대체 환경 변수도 있습니다.

+0

야! '$ _SERVER [ "REQUEST_URI"]'완전히 일했습니다! 나는'print_r ($ _ SERVER);'를 확인했고 request_uri가 적절한 태그를 가져 오는 것을 보여 주었기 때문에 PATH_INFO를 바꿔서 모든 것이 완벽했다. 정말 고맙습니다! (미안해, 너를 투표 할 수 없어!) – user2089001