내 프로젝트에 깨끗한 URL을 갖고 싶습니다. 그래서이 코드를 .htaccess 파일에 작성했습니다.
RewriteEngine On
Options +FollowSymLinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&id=$2 [NC,QSA,L]
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [NC,QSA,L]
그러나 로컬에서 작업하려고 할 때 완전히 작동하지 않습니다. 로컬 웹 서버 경로의 htdocs (www)에
디렉토리 myproject
가 있고 다른 파일이이 폴더에 저장되어 있다고 가정 해보십시오. 이제로 이동하면 프로젝트를 볼 수 있습니다 localhost/project
.
이제 URL로 작업하고 싶습니다.
같은 URI에 매개 변수가 하나만 있으면 잘 작동합니다 localhost/myproject/tours
. 그러나.과 같은 두 개의 매개 변수가 있으면 localhost/myprojects/tours/inside
모든 css, js 및 이미지 파일이 사라지는 것 같습니다. RewriteBase /myproject
.htaccess 파일 에도 추가 했지만 아무것도 해결되지 않았습니다.
내 실수는 무엇입니까? 원격 및 로컬 서버 모두에서 작동하는 솔루션이 필요합니다.
우선, 코드에 대한 다른 질문에 대한 내 응답을 참조하십시오. .htaccess mod_rewrite가 실제 디렉토리를 표시하지 않는 이유
이제 RewriteBase
css / js / images 등에 대한 문제는 해결되지 않습니다. htaccess 전용이며 규칙을 다시 작성할 때 기본 경로를 정의합니다.
이 문제를 피하는 일반적인 방법 중 하나는 모든 파일에 <head>
html 태그 바로 뒤에 기본 URL을 추가하는 것 입니다.
당신에게는 다음과 같습니다.<base href="http://localhost/myproject/" />
그렇지 않으면 여기에 도달하면 여기의 기본 기본 경로가 현재 디렉토리 ( )이고 원하는 것이 아니기 때문에 localhost/myprojects/tours/inside
css / js / images 링크 가 해결됩니다 .localhost/myprojects/tours/inside/__here__
/myproject/tours/inside/
편집 :이 경우 css / images / javascript html 링크에서 선행 슬래시를 제거하는 것을 잊지 마십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다