2009-05-23 6 views
0

실제로 ~name/how.php 대신 ~name/how을 실행하고 싶습니다..htaccess/mod_rewrite

나는 htaccess로에서 다음을 변경 한 :

# If the requested URI does not contain a period in the final path-part 
RewriteCond %{REQUEST_URI} !(.[^./]+)$ 
# and if it does not exist as a directory 
RewriteCond %{REQUEST_fileNAME} !-d 
# and if it does not exist as a file 
RewriteCond %{REQUEST_fileNAME} !-f 
# then add .html to get the actual filename 
RewriteRule (.*) $1.php [L] 

그러나로 실행됩니다 :

~name/~name/how 

을 그리고 모든 링크에는 URL의 예에서 ~name 추가됩니다 클릭합니다. http://ip/~name/~name/~name/serach.

.htaccess의 잘못된 점을 알려주시겠습니까?

답변

1

절대 경로가 아닌 상대 경로를 사용하고 있습니다. 귀하의 페이지는 이제 당신이 ~ 이름/경로에 있다고 생각합니다. 귀하의 페이지에 <base href>을 설정할 수 있습니다. How to use apache's mod_rewrite rewriterule without changing relative paths

편집 :

당신은 가능성이 도움이 될 수

/whatever/index.php 뭐든/매핑 '은 DirectoryIndex index.php에'를 사용하여이 작업을 단순화 할 수있는 짧은 답변을. 메뉴에 절대 경로를 사용하는 것을 고려해야하며, PHP 네임 포함은 더 깊게 네 스팅을 시작할 때 문제를 방지합니다. 상대 경로는 두 단계 깊이있는 경우에만 유효합니다 (예 : ~ laborfa2/search /)

솔직히 링크가 혼란스러워 혼란스러워집니다. 매우 간단한 테스트 사이트를 만들어 경로를 제대로 구성하는 것이 좋습니다. 적절한 경우 절대 경로와 상대 경로를 사용하십시오. 기본 href를 제거하면 더 혼란 스럽습니다. 일단 당신이 그것을 실행하면 다시 작성해보십시오. 상대 경로는 경로 깊이가 재 작성에 의해 변경 될 경우 업데이트해야 할 수도 있습니다 ..

+0

사실 저는 mod rewrite/htaccess에서 새롭습니다. 실제로 변경할 필요가있는 것을 정교하게 제발 할 수 있습니까 ?? –

+0

좋습니다. 간단히 말해서 이것은 재 작성 문제가 아닙니다. HTML 파일이 하위 경로 아래에있는 것처럼 보이게하여 HTML의 상대 경로가 잘못된 위치를 가리키게합니다. 상대적인 링크를 절대 경로로 변경하거나 레이아웃을 변경하여 (DirectoryIndex 제안과 같이) 상대적인 리소스가 실제로 어디에 있는지 확인할 수 있습니다. – SpliFF

+0

안녕 plz이 http://74.220.215.241/~laborfa2/를 확인하고 '작동 방법'을 클릭하면 작동하지만 '로스 앤젤레스'를 오른쪽 클릭하면 오류가 발생합니다. 실제 시간 URL은 입니다. http://74.220.215.241/~laborfa2/lf/main/com/search.php?area='Los Angeles ' –

0

이것은 문제를 해결하는 URL입니다 : 상대 URL은 항상 기본에서 해결됩니다 URL이 다른 경우 현재 URL의 URL입니다. 따라서 /~name/foo에 있고 ~name/bar (이 URL은 상대 경로입니다!)을 가리키는 링크가 있다면 /~name/~name/bar으로 확인됩니다. 그러나 /~name/bar을 가리키면 이미 절대 URL 경로이므로 해결되지 않습니다.

따라서 절대 URL 경로 (/으로 시작) 또는 기본 URL (BASE HTML element 참조)을 사용하여이를 피할 수 있습니다. 그러나 후자는 상대 URL 경로로 시작하는 상대 URL뿐만 아니라 모든 상대 URL 참조에도 영향을 미칩니다.