2013-05-15 2 views
1

두 개의 허영 URL을 지원하기 위해 .htaccess를 작성하려고합니다. 코드는 .htaccess와 잘 맞지 않으므로 스스로 말합니다. 가고시HTACCESS | 두 번째 다시 쓰기 규칙을 추가 하시겠습니까?

RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?p=$1&s=$2 [L,QSA] 

예를 http://website.com/home/test

내가 404를 얻을 수 있지만, $ _GET하는 [ "P"는] 아직도 집에 그냥 website.com/home에 가면 반환합니다.

URL에 두 번째 변수를 추가 할 때 404가 표시되는 이유는 무엇입니까?

+0

'^ ([a-zA-Z0-9 -] +) /? $'는 알파벳 문자와 슬래시로 구성된 URL과 일치합니다. – zerkms

+0

나는 htaccess가 좋지 않다. 예를 들어 주시겠습니까? – Rbn

답변

2

/home/test^[a-zA-Z0-9]+/?$과 일치하지 않으므로 404가 표시됩니다. 첫 번째 / 이후의 두 번째 그룹은 $ 문자열 종료 문자 뒤에 있습니다. 보조 () 그룹을 추가해야합니다 (선택 사항). 나는 문자를 [^/]+a-zA-Z0-9으로 바꾸고 다음 슬래시까지 모든 것을 일치시킵니다.

(?:) 그것이 $2 요소를 검색하는 내부 비 캡처 그룹 포착 기 ()와, 제 encompasing /을 나타낸다. 전체 구조는 최종 $ 종결 자 앞에 ?으로 선택적으로 지정됩니다.

RewriteEngine On 
RewriteRule ^([^/]+)(?:/([^/]+)/?)?$ index.php?p=$1&s=$2 [L,QSA] 
+0

@zerkms 감사합니다.주의를 충분히 기울이지 마십시오. –

+0

완벽. 고맙습니다 =) – Rbn

관련 문제