2014-07-07 4 views
0

내 재 작성 규칙이 온라인 상태에서 완벽하게 작동하는 이유를 알아내는 데 어려움을 겪고 있지만 내 Mac에서 로컬 복사본을 실행하려고 할 때 실패합니다. . 나는 MAMP O LAMP를 사용하지 않고 아파치와 PHP를 수동으로 설치했다. Apache는 2.2.26이고 php는 5.4.20입니다.Apache mod_rewrite가 변수를 전달할 수 없습니다.

내 htaccess로 파일에 더 규칙이 있습니다,하지만 난에 대해 걱정하는 사람은이 두 가지 있습니다 :

RewriteRule ^category/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/?$ category.php?slug=$1&page=$2 [L] 
RewriteRule ^category/([a-zA-Z0-9_-]+)/?$ category.php?slug=$1 [L] 

는 기본적으로 변수는 PHP 파일에 전달되지 않습니다. 이 외에도 아래 규칙은 완벽하게 작동합니다! 심지어 내 지역 설정에 나는 "/^카테고리"I로 시작하는 두 가지 규칙을 가지고

RewriteRule ^project/([a-zA-Z0-9_-]+)/?$ project.php?slug=$1 [L] 

이 온라인 (우분투) 작동하지만 로컬 실패하는 이유는 모든 단서를 사실 제외한 모든 차이를 볼 수없는 이유는 무엇입니까?

+0

, 그러나 다만 팁을'[A-ZA-Z0-9가 _-] +''로 단축 할 수있다 [\ w -] + '\ w'는 문자, 숫자 및 밑줄과 일치합니다. – zx81

답변

1

다 변수가 켜져 있다고 생각합니다. 이로 인해 mod_negotiation이 파일 경로 리소스에 대한 퍼지 일치 요청을 유발합니다. 따라서 /category/something을보고 category.php 파일을 보면 mod_rewrite를 완전히 우회하여 PHP 파일 (이 경우에는 ala PATHINFO)에 요청을 보냅니다.

하는 MultiViews을 끄기 시도 :

Options -Multiviews 
문제에 대해 확실하지
+0

존 감사합니다! 그게 문제를 해결했습니다! –

관련 문제