2016-06-20 6 views
0

여기 내 문제가 있습니다. 파일이없는 경우에만 URL을 다시 쓰는 방법을 알고 있습니다. 하지만 전에 만난 적이없는 문제를 발견했습니다. http://www.my-host.com/agences/my-agencies파일에 URL 다시 쓰기 .htaccess

와 디렉토리 루트에 두 파일 :

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^agences/(.*) /agences.php?agence=$1 
:
  • htaccess로
  • htaccess로에서

    • agences.php의 URL을 감안할 때

      이것은 /agences.php로 리디렉션되지 않으며 심지어 해석되지 않습니다.

      RewriteRule ^agences/(.*) $1 
      

      그것은 심지어 재 작성 규칙을 처리하지 않습니다 나는하여 RewriteRule의를 변경하는 경우. 그리고이 같은 정규식 상태로 슬래시를 앞에 추가 그래서 경우에도 :

      RewriteRule ^/agences/(.*) $1 
      

      나는 아파치 2.4.10에서 실행 에 AllowOverride 모든이 가상 호스트에 구성 할 수 있습니다.

      도움 주셔서 감사합니다.

    +0

    /agences /를 요청하면 404 오류가 발생합니까? – starkeen

    +0

    예,'http : // www.my-host.com/agences /'에 404 오류가 발생했을 때 –

    답변

    1

    코드의 시작 부분에 그 추가 :

    Options -MultiViews 
    

    MultiViews를 사용하면 다음과 같은 효과가 있습니다 : 서버가/어떤/디렉토리/foo는, 경우/일부/디렉토리에 대한 요청을 수신하는 경우 /some/dir/foo가 존재하지 않으면 서버는 이라는 이름의 파일을 찾아 foo. *라는 파일을 찾습니다. 은 동일한 파일을 모두 지칭하는 동일한 유형의 파일 클라이언트가중 하나를 요청하면 콘텐츠 인코딩이 이름으로. 그런 다음 클라이언트의 요구 사항에 가장 잘 맞는 것을 선택합니다. http://httpd.apache.org/docs/2.0/en/content-negotiation.html

    +1

    고맙습니다. MultiViews 옵션이 mod_rewrite에서 문제가 될 수 있다는 것을 알지 못했습니다. –