2009-09-12 7 views
0

.htaccess n00b의 비트이고 일상 생활에서 정규 표현식을 처리 할 수 ​​없습니다.mod_rewrite 리디렉션 규칙 변수 질문입니다.

RewriteRule ^logo/?$ /pages/logo.html 

는 기본적으로,이 /pages/logo.html을 가지고 가고 /logo한다 :

난 그냥 잘 작동 RewriteRule 다음 코드 조각이있다.

변수를 사용하여 코드를 일반화 할 수있는 방법이 있습니까? 따라서 각 페이지마다 별도의 줄을 사용하지 않아도 자동으로 작동합니다.

저는 $1이 변수로 작동 할 수 있지만 대개는 쿼리에 해당하므로이 인스턴스에서는 작동하지 않습니다.

답변

1

첫 번째가 될 것입니다. 따라서 /logo/pages/logo.html으로 다시 작성하도록 요청해야합니다. 규칙이하는대로 URL 경로 /logo을 내부적으로 /pages/logo.html으로 다시 쓰고 그 반대는 마찬가지입니다. 이제 일치하는 문자열의 일부를 사용하려면

, 당신은 다음과 $n에 참조 할 수 있습니다 그룹화 ((expr))에 그룹을 사용해야합니다. 귀하의 경우에는 패턴 [^/]는 슬래시 / 이외의 문자를 설명하는 적합 할 것

RewriteRule ^([^/]+)$ /pages/$1.html 
+0

나는 내 서버에 PHP 파일에 적용되지 않았다 있도록를 얻고 있었다 고투 유일한하는 이 재 작성의 대상이 아니 었습니다. 나는 한다 RewriteCond % {REQUEST_FILENAME}로가는 끝났다! ^. * \. php에 $ – Yahel

+0

또한 '한다 RewriteCond % {REQUEST_FILENAME}을 사용할 수 있습니다! 기존의 일반 파일을 제외 할 -f'. – Gumbo

1

이 시도 :

RewriteRule ^/pages/(.*)\.html$ /$1 

(.*)pages/.html 사이의 모든 항목과 일치합니다. 일치하는 항목은 $1에서 사용됩니다. 그래서, /pages/logo.html/logo이되고, /pages/subdir/other_page.html 당신은 서버에 요청을 처리 할 수 ​​mod_rewrite를 알 필요가 /subdir/other_page

관련 문제