2011-03-05 3 views
0

기본적으로 foo/부터 시작하여 foo/index.php?url=으로 시작하는 요청을 다시 작성하고 싶습니다. 예를 들어 http://localhost/foo/somethinghttp://localhost/foo/index.php?url=something이되어야합니다.기존 파일을 제외한 모든 내용 다시 쓰기

RewriteRule ^foo/(\w*) foo/index.php?url=$1 

이 있지만 무료 호스팅 서비스에 대한 온라인, 내 로컬 호스트에서 작동 :

나는 현재이 규칙을 가지고있다. 중요한 것은 기존 파일을 다시 씁니다. 따라서 foo/style.cssfoo/index.php?url=style.css이되므로 모든 이미지와 레이아웃이 사라졌습니다. 이것은 내 로컬 호스트에서 일어나지 않습니다.

나는 비슷한 질문을했습니다 : mod_rewrite: Redirect if anything but a file,하지만 실제로 아무것도하지 못했습니다.

그럼 기존 파일을 제외한 모든 파일을 다시 작성하는 방법은 무엇입니까? 왜 내 로컬 호스트에서만 작동합니까?

답변

2

이 작동하지 않는 경우 :

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^foo/(\w*) foo/index.php?url=$1 

이 시도 : 추가 $ 기호

RewriteRule ^foo/(\w*)$ foo/index.php?url=$1 

. 그러나 이것은 도트와 같은 단어가 아닌 문자로 된 URL을 다시 쓰지 않습니다 (따라서 foo/style.css는 다시 쓸 수 없습니다).

+0

내 호스트가 이제 내 디스크 사용량이 가득한 반면 분명히 그렇지 않다고 말하면서 ... 나는 다른 호스트로 옮길 것이라고 생각합니다. 귀하의 제안은 여전히 ​​내 localhost에서 작동하므로, 일하는 무료 호스트를 찾으면 그것을 사용할 것입니다. 감사. – pimvdb

1

확장을 정규식에 추가하면 어떨까요? 다시 말하면, dot이 존재하지 않는다는 요청입니까?

RewriteRule ^foo/[^.]+ foo/index.php?url=$1 

아니면 내가 당신이 foo는/스타일의 경기 이후 파일을 (당신이 URL의 끝으로 다음 문자를 필요로하지 않았다)

일치 수있는 다른 자신의

RewriteRule ^foo/(\w*)$ foo/index.php?url=$1 

원인에 $를 추가 할 수 있습니다 추측

어때요?

관련 문제