2011-12-05 6 views
0

나는 두뇌 경련이있다. htaccess를 사용하여 페이지를 다시 쓰고 때로는 전달되는 변수에 / (슬래시)이 포함됩니다. 때로는 슬래시가 있고 때로는 존재하지 않을 것입니다. 그러나이 모든 것이 하나의 변수로 취급된다는 것은 매우 중요합니다. 나는 정말로 str_replace()으로 모든 내 페이지를 다시 프로그램하지 않고 -/으로 전환 한 다음 데이터베이스를 호출합니다. 예를 들어 : htaccess "/"가있는 정규 표현식

http://www.example.com/accounting/finance.htm 

Accounting/Finance

그것은 회계 디렉토리에없는 다음 회계 finance.htm라는 페이지가있다 ..... 내가 필요로하는 하나 개의 변수입니다. 지금까지 나는 비슷한 것을 가지고있다.

RewriteRule ^([A-Za-z]+.*[A-Za-z]*)\.htm$  mypage.php?page=$1 [L,NC] 

그러나 그것은 그것을 좋아하지 않는다.

누군가 나를 도울 수 있습니까?

미리 감사드립니다.

코멘트에 회신은/

특정 내가 찾고 규칙이 같은 것입니다 .....

[문자열의 시작] ... 1 개 이상의 문자 답변 ... [1 개 이상의 문자가 뒤 따르는] .htm [문자열의 끝]

아래의 두 답변은 작동하지 않습니다 ... 나는 그것이 디렉토리로 취급하고 있습니다. 실제 "파일 이름". 마자 내가 얻을 수 있다면 ... 페이지가 잘 작동

+1

임 녹슨하지만 당신은 ([A-ZA-Z /]) 같은 것을 할 수 있습니까? –

+0

@DevinM 나는 [A-Za-z /] +를 시도해 봤지만 그렇게 생각하지 않았습니다. 나는 또한 [A-Za-z \ /] +와 [A-Za-z] + \/* [A-Za-z] + \ .htm을 시도해 보았다. – n0nag0n

+0

당신의 예제가 작동하지 않는 이유는 ". *"가 URL 끝에 모든 것을 탐욕스럽게 먹고 있기 때문에 ".htm"과 일치하는 것이 아무것도 없다는 것입니다. 그러나 일치하지 않을 URL이 무엇인지 명확하게 알 수는 없으므로 그 이상으로는 도움이되지 않습니다. 이 규칙이 ".htm"으로 끝나는 것과 일치하도록 하시겠습니까? – IMSoP

답변

4

슬래시 전방을 분리 할 때 당신은 바로, 당신은이 일이 필요합니다

([A-Za-z/]*)\.htm 

그것이 NOT- 모든 조합/또는 함께 작동합니다/

예 :

accounting/finance.htm 
test.htm 
+0

이 중 하나는 약간 조정했습니다. :) – n0nag0n

+0

위대한 - 당신은 무엇을 조정 했습니까? – Nebel54

+0

나는 거기에 던질 필요가있는 몇 가지 다른 커스텀 캐릭터를 가지고 있었다. 웬일인지/나에게 가장 슬픔을 주었던 이유와 누가 그 이유를 알았는지. 그것은 지금 작동합니다. 그것이 내가 아끼는 모든 것입니다. – n0nag0n

2

슬래시는 다른 문자입니다. 그 외에는 정규 표현식이 불필요하게 복잡해 보입니다. 예를 들어 .*[A-Za-z]*.*과 다르지 않고 [NC] 플래그를 사용하면 을 [a-z]으로 줄일 수 있습니다.

귀하의 정확한 규칙

완전히 명확하지 않다,하지만 당신은 아마이 라인에 뭔가 원하는 : regexps '에에

RewriteRule ^([a-z/]+)\.htm  mypage.php?page=$1