문제

regexp에 대한 경험이 거의 없더라도 내가 쓰고있는 몇 가지 PHP 스크립트에 대한 내 자신의 규칙 중 일부를 작성하고 있습니다. 참고 : 작은.

기본적으로 인덱스로 인수로 제외한 모든 URL을 index.php에 전달하고 데이터베이스에서 슬러그로 정의 된 대부분의 URL을 다시 작성하려고합니다.

IE : /admin, /config, /images, /lib 및 /템플릿이 존재하지만 다시 작성하고 싶지는 않습니다. 그러나 다른 모든 것은 인덱스에 인수로 전달되기를 원합니다.

나는 현재 이것을하고있다 :

url.rewrite-once = (
    "^/(.*)$" => "/index.php?$1"
)

데이터베이스 슬러그와 아름답게 작동하지만 위에 나열된 폴더도 리디렉션됩니다. 여기에는 직접 액세스 해야하는 파일이 포함되어 있지만 일치에서 문자열을 제외하는 방법을 설명 할 수는 없습니다.

이 작업을 수행하는 방법을 알면 나머지는 알아낼 수 있지만 Regexp를 처음 접하는 것이 어디서부터 시작 해야할지 모르겠습니다.

모든 도움은 대단히 감사하겠습니다.

편집하다:나는 이것들을 촬영했다 :

"^/(index\.php|admin|config|images|lib|template)" => "$0",

FF는 해당 폴더에 대한 끝없는 리디렉션을보고합니다.

"^/(?!(admin|config|images|lib|template))(.*)$" => "$0"

폴더를 제외하고는 모든 것이 일치하지 않습니다.

"^/([^(admin|config|images|lib|template)]*)$" => "/index.php?$1"

다시 말하지만, 아무것도 다시 쓰지 않습니다.

"^/(.*)$" => "/index.php?$1"

다시 작성하고 싶지 않은 폴더를 포함하여 모든 것을 다시 작성합니다.

도움이 되었습니까?

해결책

나는 다음 표현으로 내가 찾고 있던 것을 달성 한 것 같습니다.

"^/(?!(index\.php|admin|config|images|lib|template)).*$" => "/index.php?$0"

나는 그냥

trim( $_SERVER['argv'] ,"/")

Index.php에서 슬러그를 얻습니다.

다른 팁

이 시도:

url.rewrite-once = (
    "^/(index\.php|admin|config|images|lib|template)" => "$0",
    "^/(.*)$" => "/index.php?$1"
)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top