2012-11-26 3 views
0

정규식 또는 아파치 다시 작성 작업을 한 번도 해보지 못했지만 고객을위한 대규모 전자 상거래 사이트를 작성한 적이 있습니다. 이제 그의 저장소에 URL을 다시 작성할 수 있는지 묻는 중입니다. 나에게는 내가 필요한 2 개가있다. 그리고 그가 원하는 것을 다시 쓸 수 있는지 누군가가 나에게 말할 수 있다면 큰 도움이 될 것이다.Apache URL 다시 작성 방법

제품 정보 URL은 현재 : 제품/세부/3/

을 로얄 블루 - 합창단 - 훔친 그리고 그는 그냥 /

을 로얄 블루 - 합창단 - 훔쳐 ...되고 싶어

두 번째 페이지는 카테고리 페이지입니다. 그들은 현재

카테고리 /보기/합창단 - 스톨이며, 그는 그들이 단지 /합창단 - 스톨

이 가능되고 싶어? 사이트에 대한 전체 URL은 현재 수행중인 작업을보고 싶다면 현재 http://www.stoles.com/stoles (사용자 이름 alex, 암호 superman)입니다. codeigniter에 프로그램되어 있습니다. 현재이 다음 재 작성이 된답니다 URL의에서 index.php를 제거 할 수있다

... 처음에

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule .* index.php/$0 [PT,L] 
+0

은 현재 재 작성된 내용이 무엇인지 아는 것이 유용 할 것입니다. – Popnoodles

+0

은 현재 재 작성으로 질문을 편집했습니다. –

답변

0

어쩌면이 같은 종류의 URL 및 제품 정보 URL간에 차이가 있어야한다 :

product details : pd/royal-blue-choir-stole  
category   : /choir-stoles 

하지만 당신은 당신이 제품 제목이나 카테고리 이름과 URL을 일치시킬 수 있도록 접두사없이 수행하려는 경우. 예 :
"Choir Stoles"라는 이름의 카테고리와 "royal blue choir stole"이라는 이름의 제품이 있습니다. 데이터베이스의 공간, 검색을 찾아 "-"

다음
RewriteRule /([a-z\-]+)$ router.php?q=$1 [NC,L] 

당신이 $ _GET [ 'Q'] router.php과 교체로 얻을 수 있습니다 :
지금 당신은 당신의 htaccess로에서 코드 줄을 사용할 수 있습니다 밖으로 그것 범주 또는 제품 및 얻을 정보 양식 데이터베이스.
도움이 되시길 바랍니다. 제품 URL (routes.php에 추가) (제품/세부/어쩌구 어쩌구 어쩌구 저쩌구)

변화 카테고리 URL에 대한

$route['product/:any'] = "product/details"; 
product ->controller 
details -> action 

에 경로의 값에 대한

0

이 내가 정말 관심이 있어요 뭔가 in.. 자주 변경되지 않는 제한된 수의 범주가있는 경우 범주 경로를 하드 코딩하는 것이 타당합니다. 무엇이든 될 수있다 - 범주 적 변경하는 경우에는 제품을 같은 방법으로 수행하려는 경우

$route['choir-stoles'] = "shop/choir-stoles"; 

그렇지 않으면, 또는, 당신은 URL에 무엇이든 가치에 대한 검색을 수행해야합니다.그럼 내가 궁금한 건 무엇 - 당신의 데이터베이스와 컨트롤러에 가기 전에 중단하는 것이

http://www.stoles.com/213as+dfjljWHATEVER 

같은 요청을받을 경우 사전 필터링의 종류가 너무 발생할 수 있습니다.

이 유형의 필터링은 경로에서 발생해야합니까? 및 이러한 종류의 시도를 기록해야합니까? 그들이 몇 번 연속으로 IP를 금지한다면? 아니면 지나치게 편집 적이며 우려가 아닌가?

바로 지금 스타일은 '제품', '카테고리'등과 같이 한 단어 뒤에 검색 값을 밀어 넣는 것이지만 더 많은 고객이 짧은 URL을 요청할 것이므로 몇 가지 모범 사례를 제시하는 것이 좋습니다.

+0

아파치 모드 재 작성으로 처음 2 개의 URI 세그먼트를 삭제할 수 있습니까? –