2014-01-08 3 views
2

현재 내 Apache 서버에 대한 모든 요청을 olddomain.com에서 newdomain.com으로 리디렉션하고 있습니다. 제대로 작동하지만 실제로는 하나의 파일 만 있으면 olddomain.com에있는 것처럼로드됩니다. 그것은 내가 원하는 정확히 무엇 때문에 Apache VirtualHosts - URL 리디렉션에서 단일 파일 제외

<VirtualHost *:80> 
ServerName olddomain.com 
ServerAlias olddomain.com 

Redirect/http://newdomain.com/ 
</VirtualHost> 

내가이 간단한 Redirect/http://newdomain.com 솔루션을 사랑하고 심지어 내가 그것을 이해할 수 있도록 간단

다음은 중요한 비트가 지금의 모습입니다! 하지만 누군가/무언가가 http://olddomain.com/excludedfile.php으로 갈 때 예상되는 도메인 이름으로로드되도록 예외를 만들려면 어떻게해야합니까? 지금까지 mod_rewrite 설정에서 찾은 해결책이있는 것 같습니다. mod_rewrite가 필요한 경우 나는 그것을 가지고 살 수는 있겠지만 차라리하지 말아야한다. ...

왜 내가 이것을 필요로 하는가 : 방금 ​​애플에 제출 한 애플 리케이션을 변경하기 위해 막판에 결정했다. 도메인 이름은 이전 도메인 이름을 볼 때 명시 적으로 의존하기 때문에 응용 프로그램의 기능을 손상시킵니다. 가상 호스트 파일의 변경으로 인해 더 이상 표시되지 않습니다.

답변

1

당신은 정규식 기능에 대한 RedirectMatch를 사용해야합니다 :

RedirectMatch 301 ^((?!.*?excludedfile\.php).*)$ http://newdomain.com$1 

이 변경 사항은 아파치를 다시 시작해야합니다.

+0

이 문제가 확실합니까? 나는'Redirect' 행을 이것으로 바꾸었고 이제는 홈페이지 (http : // newdomain.com /'- 슬래시 뒤에 아무 것도 없음)로 모든 것이 리다이렉트된다. – tylerl

+0

아, 오타가 있었는데, 업데이트 된 규칙을 시도하고 다시 시작하십시오. – anubhava

+0

이상한 - 이제는 'http : // olddomain.com/excludedfile.php'에 갈 때 404 오류가 발생합니다.'http : // olddomain.com' 아래의 다른 위치를로드하려고하면 추가// 파일 이름 앞에 -'http : // olddomain.com/otherfile.php'은'http : // newdomain.com // otherfile.php'이됩니다 ... – tylerl