2014-08-29 2 views
0

에 빈 변수를 허용하는 방법 내 htaccess로이 있습니다 검색이 정의되어있는 경우 잘 작동모드 재 작성

RewriteRule ^search/([^/]*)/?$ search.php?search=$1 [NC,L,QSA] 
RewriteRule ^search/([^/]*)/([^/]+)/?$ search.php?search=$1&cat=$2 [NC,L,QSA] 

합니다.

경우에 따라 검색 변수를 비워 두거나 전체 카테고리를 검색 할 수 있습니다.

mod 재 작성에서 어떻게 작동합니까?

검색이는 것 정의 된 경우 :

search/search-variable/category-name 

검색이 비어 또는 ''모드 재 작성이 같은로 표시한다면?

search//category-name 

또는 모두 함께이 같은 변수를 생략 : 당신이 잘못 정규식이

search/category-name 

답변

0

. 이 [^/]+은 적어도 하나의 문자를 의미합니다. 표현식을 [^/]*으로 변경해야합니다.

Wiki: Standards of Regular expressions

+0

감사합니다.이 검색을 시도했지만 검색/카테고리 이름 또는 검색/카테고리 이름 작업을하지 않았습니다. – user3312792

0

당신은 어떻게 search/category-namesearch/search-term 구별합니까? 카테고리가 무엇인지, 검색 용어가 무엇인지, 또는 검색어가 카테고리로 존재 하는지를 쿼리함으로써 컨셉을 가짐. Mod_rewrite는 그렇게 할 수 없습니다. 그냥 패턴과 일치하기 때문에 2 개의 다른 패턴에 대해 2 개의 동일한 패턴이 있으므로 검색 파일에서 두 패턴을 구별해야합니다.

이외에 example.com/search//something과 같은 URL은 내부적으로 으로 표시 될 수 있습니다. 이는 URL이 여전히 임의의 문자열이 아닌 리소스에 대한 경로이기 때문입니다. search.php 검사에서

RewriteRule ^search/([^/]*)/?$ search.php?search=$1 [L,QSA] 
RewriteRule ^search/([^/]*)/([^/]*)/?$ search.php?search=$1&cat=$2 [L,QSA] 

$_GET['search']는 카테고리 또는 검색어 인 경우.

또는 URL을 search/search-term/category/category-namesearch/category/category-name과 같이 변경하십시오. 다음 각 경로 세그먼트에 무엇이 있는지 확인할 수 있습니다.

RewriteRule ^search/([^/]+)/category/([^/]+)/?$ search.php?search=$1&cat=$2 [L,QSA] 
RewriteRule ^search/category/([^/]+)/?$ search.php?cat=$1 [L,QSA]