2016-07-14 3 views
0

나는 leasing.php와 article.php라는 두 개의 하위 사이트가있는 간단한 PHP 사이트에서 작업하고 있습니다. 이 잘
http://domain/leasing/article-name (? 쇼 article.php 별칭 = $ 변수)를 작동 - -이되지apache .htacces - url에 다시 작성

내 .htacces
http://domain/leasing (쇼 leasing.php) : 나는 사용자에게 원하는

이 같은이 하위 사이트를 참조 파일 :

RewriteEngine on 
RewriteRule ^(/$|$) index.php [NC,L] 
RewriteRule ^leasing leasing.php [NC,L] 
RewriteRule ^leasing/([A-Za-z0-9-]+)/?$ article.php?alias=$1 [NC,L] 

브라우저에서 article.php 페이지를 보려면 RewriteRules를 어떻게 변경합니까?

+0

LazyLizzard 답변 중 하나가 도움이 되었다면 선택하십시오 (원하는 경우 upvote). 이러한 답을 연구, 테스트 및 작성하는 데는 시간이 걸립니다. 묻지도 않고 실행하기도 쉽지 않습니다. – BeetleJuice

답변

1

당신 때문에 경로 /leasing/article-name 일치하는 규칙의 양 때문에 곤경에 달리고, URL 재 작성은 제 와서 처음 제공으로 발생하기 때문에, 파서는 심지어 마지막에보고하지

RewriteEngine on 
RewriteRule ^leasing$   leasing.php [NC,END] 
RewriteRule ^leasing/(.*)/?$ article.php?alias=$1 [NC,END] 

시도 규칙.

해결 방법은 /leasing과 일치하지만 더 이상 /leasing/article-name과 일치하지 않도록 첫 번째 규칙을 변경하는 것입니다. 가장 간단한 방법은 임대 후 즉시 $으로 패턴을 끝내는 것입니다. 이후에 계속되는 경로는 더 이상 첫 번째 규칙과 일치하지 않습니다.

내가 사용하는 플래그는 귀하의 플래그와 약간 다릅니다. L이있는 반면 END을 사용합니다. 차이점은 미묘하지만 기본적으로이 경로 (최종 도착지)에 필요한 마지막 다시 쓰기 인 경우 END을 사용하십시오. leasing.php의 rewirte 규칙에서

+0

이 코드 단편은 질문을 해결할 수 있지만 [설명 포함] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 정말 게시물의 품질을 향상시키는 데 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. 코드와 설명의 가독성을 떨어 뜨리기 때문에 주석을 설명하는 코드를 사용하지 마십시오! – FrankerZ

+0

@dragoste는 OP가 잘못되어 무엇이 잘못되었는지 설명 할 수 있기 때문에 불필요하다고 생각했습니다. 아마 네 말이 맞을거야. – BeetleJuice

1

봐 :

RewriteRule ^leasing leasing.php [NC,L] 

조건은 "leasing을 시작 모든 것을"의미 ^leasing입니다. 일치하는 URL은 leasing/article-name입니다.

에만 정확히 leasing URL이 아닌 다른 사람을 일치하도록 최종 조건식 (^leasing$)에서 기호 (문자열끝을 의미하는) $를 추가합니다.

RewriteRule ^leasing$ leasing.php [NC,L] 
관련 문제