모든 요청을 index.php로 리디렉션하고 % {REQUEST_URI} 부분을 index.php의 인수로 전달해야합니다. 또한 % {REQUEST_URI} 부분이 기존 파일/디렉토리를 가리키는 경우에도 여전히 리디렉션을 원합니다. 예를 들어 내 문서 루트에 js
이라는 디렉토리가 있습니다. http://www.example.com/js
과 같은 사이트에 액세스 할 때 브라우저의 디렉토리 내용을 표시하는 대신 http://www.example.com/index.php?uri=js
으로 리디렉션하고 싶습니다.mod_rewrite가 CSS로드를 실행하지 않습니다
그래서 .htaccess 파일에 다음 두 줄을 추가했습니다.
RewriteEngine On
RewriteRule .* index.php?uri=%{REQUEST_URI} [QSA]
하지만 작동하지 않습니다.
먼저 기존 파일에 대한 경로를 지정하면 http://www.example.com/foo.css
, 여전히 파일 내용을 브라우저에 표시합니다. (내가 원하는 것은 http://www.example.com/index.php?uri=foo.css
입니다.) 둘째, 디렉토리에 액세스 할 때, 예 : http://www.example.com/js
, 리디렉션이 발생하지만 CSS가 적용되지 않고 내 사이트가 손상된 것 같습니다.
루트의 파일/디렉토리를 가리 키지 않는 임의의 문자열을 지정하면 좋은 소식입니다. 이 디버깅을하는 데 몇 시간을 보냈지만 아무런 단서도 없습니다. 문제는 어떻게 해결할 수 있습니까?
참고로 저는 Apache 2.4.3을 사용하고 있습니다.
좋아, 왜 상대 경로가 잘못 되었기 때문에 내 CSS가로드되지 않는 문제가있었습니다. 기본적으로, 링크 태그 안의 href 속성을 href = "style.css"에서 href = "./ style.css"로 변경했습니다. 하지만 기존 파일이 여전히 브라우저에 표시되는 다른 문제는 해결하지 못했습니다. – CookieMonster
설명대로이 규칙만으로 작동해야합니다. 이 규칙 앞에있는 .htaccess에 다른 규칙이있을 수 있습니다. –
@OlafDietsche, 확인, http://www.example.com/style.css 할 때 작동하지 않습니다. 즉, 내 브라우저에 css 파일의 내용이 표시됩니다. 하지만 http://www.example.com/login.php를 실행하면 작동합니다. 두 파일 모두 문서 루트에 있습니다. 이것은 내가 사용하는 브라우저에 특정한 것입니까? Chrome을 사용합니다. – CookieMonster