2014-02-17 3 views
1

Windows에서 xampp을 실행하는 개발 서버에서 .htacess 다시 쓰기 규칙이 올바르게 작동합니다. Linux core 3.8.0-21-generiC#32-Ubuntu SMP Server version: Apache/2.2.22 (Ubuntu)을 실행중인 라이브 서버에 가면 매개 변수가없는 규칙이 더 이상 작동하지 않지만 매개 변수가있는 규칙이 작동합니다.htaccess 규칙은 리눅스 서버에서 작동하지 않습니다.

Options -Indexes 

    <filesMatch "\.(html|htm|txt|js|htaccess)$"> 
    FileETag None 
    <ifModule mod_headers.c> 
    Header unset ETag 
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate" 
    Header set Pragma "no-cache" 
    Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT" 
    </ifModule> 
    </filesMatch> 

    ErrorDocument 404 /404.php 

    RewriteEngine On  
    #Main site rules 
    RewriteRule ^login/?$ login.php [NC,L] 
    RewriteRule ^contact/?$  contact.php [NC,L] 

위의 규칙은 contact.php와 login.php로 가서 작동하지 않습니다. 그러나 매개 변수가있는이보다 복잡한 규칙은 작동합니다. RewriteRule ^game/([a-zA-Z0-9]+)/?$ handles/handle-game-select.php?name=$1 [NC,L]

이 문제를 일으키는 두 서버 환경에는 차이가 있습니까? RewriteRule ^contact.x contact.php [NC,L] 우리가이 일에

매우 혼란 ... contact.php에 도달 할 수 있습니다

또한, 우리는 같은 이상한 일을하는 경우에 나타납니다.

도움 주셔서 감사합니다.

답변

1

MultiViews 옵션을 사용 설정 한 것으로 판단됩니다. 를 비활성화 상단에이 줄을 추가 mod_rewrite 전에 실행하고 Apache's content negotiation module에 의해 사용되는

Options -MultiViews 
  • 옵션 MultiViews 파일의 아파치 서버 경기 확장을합니다. 따라서 /file은 URL에 포함될 수 있지만 /file.php이됩니다.
+0

감사합니다. 이것에 비틀 거린 다른 사람도이 기사를 즐길 수 있습니다 : http://blog.razuna.com/2008/03/27/apache-htaccess-and-directive-multiviews/ – Vigs

+0

잘 했어, 다행 이네. – anubhava

관련 문제