2012-07-06 3 views
0

뉴스 콘텐츠를 표시하는 웹 페이지가 있습니다. 페이지의 URL은 example.com/news.php?newsid=iphone4-releases과 비슷합니다. 나는 페이지가이 같은 URL을 통해 액세스 할 것을 권장합니다GET 변수를 대체하여 URL이 짧아졌습니다.

example.com/news/iphone4-releases 내가이 코드는 실제로 URL을 대체

RewriteCond %(REQUEST_FILENAME) !-d [OR] 
RewriteCond %(REQUEST_FILENAME) !-f [OR] 
RewriteCond %(REQUEST_FILENAME) !-l 

RewriteRule .* - [L] 

RewriteRule ^(.*)$ http://example.com/news.php?newsid=$1 [NC] 

.htaccess 파일에 이러한 변경을,하지만 난없이 동일한 URL을 유지하려면 변수를 얻으십시오. 또한,이 방법을 사용하면 URL이 example.com/iphone4-releases된다하지만 난 example.com/news/iphone4-releases

답변

0

이 만 AZ, 숫자 및 기사 이름에 대시 사용하는 가정 할 것이다 :

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^news/([a-zA-Z0-9\-]*)$ /news.php?newsid=$1 [NC] 

편집 : http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

그리고 -l에 대해 :

'-l'(심볼릭 링크)을로 TestString에 취급이 링크 매개 변수에 대한 설명

경로 이름이 존재하는지 여부를 확인하고 심볼 링크 인 경우 을 테스트합니다.

그리고 번호는 (/ 뉴스/iphone2003 새로운 발사 등.)

임 죄송이 예에서 작동하지만 서둘러 :

+0

내 newsid 너무 숫자를 사용합니다. 왜 당신이 제거한 이유를 설명해 주시겠습니까! -l을 재 작성 조건에서 (그리고 무엇을하는지) –

0

은 어쩌면 당신은 심볼릭 링크

에게로 당신이 파일을 수없는 요청 된 파일을 원하기 때문에 모두 [OR]을 제거하고 디렉토리 수 없습니다하지 필요합니다
RewriteCond %(REQUEST_FILENAME) !-d 
RewriteCond %(REQUEST_FILENAME) !-f 
RewriteCond %(REQUEST_FILENAME) !-l 

RewriteRule ^/(\w+)/(.*?)/?$  $1.php?newsid=$2 [NC,L] 

당신은 규칙 내부로 전체 도메인이 필요하지 않습니다

0

당신은 GET을 생략 기대할 수 없습니다 메신저합니다 변수를 사용하고 .htaccess를 사용하여 리디렉션이 변수를 잃어 버리기 때문에 303 리디렉션을 수행합니다. 당신이 할 수있는 것은 리디렉션 할 페이지에 POST가 포함 된 양식을 제출하고 해당 페이지에서 실제 PHP 스크립트로 심볼릭 링크를 만들고 다음 클라이언트의 브라우저를 리디렉션하는 다시 쓰기 규칙을 작성하는 것입니다.

여기에 추가 /news/ 섹션을 통합하여 위의 리디렉션입니다 :

RewriteEngine On 
RewriteBase/
RewriteCond %(REQUEST_FILENAME) !-d [OR] 
RewriteCond %(REQUEST_FILENAME) !-f [OR] 
RewriteCond %(REQUEST_FILENAME) !-l 

RewriteRule .* - [L] 

RewriteRule ^(.*)$ news/news.php?newsid=$1 [NC] 

은 또한 단지 PHP를 사용하여 리디렉션을 수행 할 수 있습니다

header("Location: http://www.redirecthere.com"); 
관련 문제