2013-07-29 5 views
0

URL 다시 쓰기에 문제가 있습니다..htaccess 파일의 여러 다시 쓰기 규칙

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteRule ^blog\/$ /blog.php [L] 
RewriteRule ^blog\/[a-zA-Z0-9\-]+\/([0-9]+)-([0-9]+)\/$ /blog.php?action=listposts&categoryid=$1&page=$2 [L] 
RewriteRule ^blog\/featured\/([0-9]+)\/$ /blog.php?action=listposts&categoryid=featured&page=$1 [L] 
RewriteRule ^blog\/[a-zA-Z0-9\-]+\/([0-9]+)\/[a-zA-Z0-9\-]+\/$ /blog.php?action=viewpost&postid=$1 [L] 
</IfModule> 

나는 이유는 모르겠지만, 그것은 작동하지 않습니다

여기 내 htaccess로 파일처럼 보이는 방법입니다. 예를 들어 blog/my-category/1-5/과 같은 URL로 이동하여 $_GET을 인쇄하면 키가 없습니다. URL이 blog/ 인 것 같습니다. 이 질문은 유감 스럽지만 중복되는 경우가 많습니다.하지만 어떻게 해야할지 잘 모릅니다. 다른 사람의 질문에 대한 해결책을 기반으로 문제가 무엇인지 이해할 수 없을 것입니다.

답변

1

Rules are processed in the order (위에서 아래로). 또한 탈출 할 필요가없는 몇 가지 사항을 피할 수 있습니다. - 끝에있는 대괄호 안의 하이픈 문자 []을 이스케이프 할 필요가 없습니다. 그들이 물건들 사이에 있으면 그들은 범위 (예 : [0-9])로 취급됩니다. 슬래시 /은 이스케이프 할 필요가 없지만 때로는 슬래시 (설정에 따라 다름)가 필요하지 않을 수 있으므로 항상 필요하지 않도록 ? 문자를 추가했습니다. 당신이 습관을 탈출하여 슬래시 온라인 예제와 책을 많이 구분 기호로 / 문자를 사용할 때 어디에서 오는 수 있습니다 PHP에서 preg_ 기능을 사용했다면

RewriteEngine on 
RewriteBase/

RewriteRule ^blog/[a-zA-Z0-9-]+/([0-9]+)-([0-9]+)/?$ /blog.php?action=listposts&categoryid=$1&page=$2 [L] 
RewriteRule ^blog/featured/([0-9]+)/?$ /blog.php?action=listposts&categoryid=featured&page=$1 [L] 
RewriteRule ^blog/[a-zA-Z0-9-]+/([0-9]+)/[a-zA-Z0-9-]+/?$ /blog.php?action=viewpost&postid=$1 [L] 
RewriteRule ^blog/?$ /blog.php [L] 

.

+0

당신은 제 '탈출 습관'에 관한 것 같습니다. 내 재 작성 명령을 고쳐 주셔서 고마워, 그들은 지금 일하고있다. 그러나 나는 리디렉션하는 파일이 'blog.php'라고 불리지 않을 때에 만 그렇게한다. 이 주변의 어떤 방법? 내 아파치 설정과 관련이 있어야한다. –

+0

@MatejGolian 아마도 '% {REQUEST_FILENAME} -f'라는 어딘가에 RewriteCond가있을 것이다. 기본 파일로 리디렉션하도록 지시하는 다음 규칙 중 하나입니다. –

+0

불행히도 .htaccess 파일에는 그러한 명령이 없습니다. 내가 게시 한 코드는 모두 포함되어 있습니다. 하지만 예를 들어 'asd'또는 'asd /'또는 'asd/anything'을 주소 표시 줄에 입력하고 .htaccess 파일이있는 디렉토리에 'asd.php'라는 파일이 있으면 'asd.php'의 내용을 얻으십시오. Options + FollowSymlinks 또는 다른 것과 관련이 있습니까? 이것이 내가 'blog.php'로 리다이렉트 할 수없는 이유 인 것 같다. –