2009-09-28 2 views
1

$ _GET [ "category"]를 사용하여 데이터베이스에서 올바른 내용을 가져 오는 category.php5라는 페이지가 있습니다. 내가 원하는 꽤 그것을 너무 외모와 같은 :.htaccess mod_rewrite 문제 - 발에 몸을 발로 차 넣었습니까?

sinaesthesia.co.uk/category/psoriasis

같을 것이다 :

sinaesthesia.co.uk/category.php5?category=psoriasis을

필자는 이전에 이런 종류의 재 작성을 성공적으로 마쳤지 만, 지금은 제대로 작동하지 않기 때문에 규칙이있어 걱정 스럽습니다. 여기 내 전체 htaccess로 파일입니다 - 라인의 마지막 커플은 위의 재 작성을 해야하는 : 나는 수동 category.php5/카테고리 = 건선을 입력하면

RewriteEngine On 

#remember to change this to aromaclear 
RewriteCond %{HTTP_HOST} !^sinaesthesia\.co.uk$ [NC] 
RewriteRule ^(.*)$ http://sinaesthesia.co.uk/$1 [R=301,L] 

#Translate default page to root 
RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|html)\ HTTP 
RewriteRule ^(.*)index\.(php5|html)$ /$1 [R=301,L] 

#translate any .html ending into .php5 
RewriteRule ^(.*)\.html$ /$1\.php5 

#change/for ? 
RewriteRule ^(.*)\.html/(.*)$ /$1\.html?$2 

#strip .html from search res page 
RewriteRule ^(.*)search/(.*)$ /$1search_results\.html/search=$2 

#translate product details link from search res page 
RewriteRule ^products/(.*)/(.*)/(.*)$ /product_details.php5?category=$1&title=$2&id=$3 [L] 

#Translate products/psorisis/chamomile-skin-cream-P[x] to productview.php5?id=1 
RewriteRule ^products/.*-P([0-9]+) /productview.php5?id=$1 [L] 

#Translate /category/psoriasis to /category.php5?category=$1 
RewriteRule ^category/(.*) /category.php5?category=$1 [L] 

, 그것은 잘 작동합니다. Category.php5/category/psoriasis를 입력 할 때 카테고리가 없습니다. 나는 내 라인이 html/html로 바뀌는 것에 대해 걱정하고있다. 오류입니다, 그러나 제가 그 라인을 꺼내더라도 여전히 작동하지 않습니다. 다른 모든 것은 예상대로 작동합니다.

+0

해당 URL의 요청에 해당 규칙이 적용되지 않습니까? – Gumbo

+0

내가 알지는 못한다 - 나는 곧은 404 상태가된다. – user97410

답변

0

아 : categories.php5라는 문서가 있고 카테고리/건선을 사용하려고하기 때문에 서버가 category.php5/psoriasis로 분류하려고 시도하는데 실패합니다. 지금 고쳐!

1

일반적인 전략으로 모든 것을 주석 처리하여 파일을 줄인 다음 끊어지게하는 규칙을 찾을 때까지 조각별로 항목을 다시 사용하도록 설정하십시오.

브라우저가 리디렉션을 캐시하는 경우가 있으므로 새 브라우저 인스턴스를 시작하는 것이 좋습니다. 유용한 서비스는 http://web-sniffer.net/이며 캐쉬되지 않은 결과가 나옵니다.

일반적으로 리디렉션 세트를 살펴보면 사용중인 체인/체 유형 시스템 때문에 약간 혼란스러워 보입니다. 대신 구체적으로 식별 할 수있는 URL로 시작하는 것이 좋습니다.

RewriteRule ^category/(.*) /category.php5?category=$1 [L] 

시작하여 당신이 전혀 필요로 끝날 경우 다음 끝으로 변환 물건 .PHP .html 중에서 => 오히려 혼란을 떠나. 리디렉션을 사용하여 사이트를 많이 만들었으며 그런 일반적인 전환을 필요로하지 않았으므로 피할 수 있어야합니다.

*는 무엇이든을 의미합니다. 또는 아무것도과 일치하므로. + 대신 사용하는 것이 좋습니다.

+0

감사합니다. 좋은 조언이 있습니다. 나는 가서 그 일을하고 다시 너에게 간다. 특히. +는 꽤 좋은 생각이다. – user97410

+0

좋아, ^ RewriteRule의 카테고리 /(.+)$ /category.php5?category=$1 [L]를 /category.php5?category=psoriasis 단지 #Translate/카테고리/건선까지 파일을 제거하려고 # /category.php5?category=psoriasis에 번역/카테고리/건선 RewriteRule^(. +) 카테고리 /(. +)$ /$1category.php5?category=$2 [L] ] 그리고 작동하지 않습니다. 그것은 아주 간단한 규칙입니다! – user97410

관련 문제