2012-04-15 11 views
0

안녕하세요 apologys 어딘가에 있지만 내 설정과 함께 작동하는 답변을 찾을 수없는 경우.모드 재 작성을 사용하여 URL 청소

나는 www.example.co.uk/products/products.phpwww.example.co.uk/products/이되도록 URL에서 파일 이름을 제거 할 웹 사이트가 있습니다. 나는 홈 페이지에서 /index.php를 제거하기 위해 다음과 같이 익숙해 왔지만 폴더에있는 파일로 작업 할 수는 없다.

홈페이지 URL에서 index.php를 제거하는 작업 코드는 여기에 어떻게 수정하여 다른 페이지에서 products.php 등을 삭제할 수 있습니까?

RewriteEngine on 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.php\ HTTP/ 
RewriteRule ^(([^/]+/)*)index\.php$ http://%{HTTP_HOST}/$1 [R=301,L] 

어떤 도움 후자를 제거하고 나머지에 리디렉션을 발행,

+0

한다 RewriteCond %}^{THE_REQUEST [AZ] {3,9} \/([^ /] + /) * 제품 \ .PHP \ HTTP/ 한다 RewriteRule^(제품 페이지를 방문 할 때 403 금지 메시지가 표시됩니다. –

+0

되돌리기 ([^ /] + /) *) 제품 \ .php $ http : // % {HTTP_HOST}/$ 1 [R = 301, L] index.php 코드로 옮기고 products.php의 이름을 index.php로 바꿉니 까? –

답변

0

이 규칙은 PHP 파일을 가리키는 모든 URL에 적용됩니다 감사합니다.

RewriteEngine on 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\/[^/]+\.php\ HTTP/ 
RewriteRule ^(.*)/[^/]+\.php$ http://%{HTTP_HOST}/$1 [R=301,L] 

편집
@Ashley 브리스 코 : 나는 당신이 여기 물건을 조금 엉망으로 생각합니다. 클라이언트가 요청하는 초기 URL이 http://www.example.com/products/products.php입니다. 위의 규칙에 따라 http://www.example.com/products/으로 다시 작성됩니다.

이제 다시 URL이 아니라 파일 자원보다 (후행 슬래시가 있음을 나타냅니다) 디렉토리를 가리키는 때문에, 아파치는은 mod_dir이 directory index file (예 : index.html을 또는 index.php 파일)의 경우 에 서비스를 제공하기 위해 노력하고있다 사용중입니다 (우리는 안전하게 추측 할 수 있습니다).

이제 403 Forbidden 응답은 웹 서버가 실행중인 사용자가 디렉토리 색인 파일을 읽거나 포함 폴더를 열 수있는 충분한 권한이 없음을 나타냅니다.

이 문제를 해결하려면 실제로 디렉토리 색인 파일이 있으므로 (따라서 제품 디렉토리 내에 products.php에서 index.php으로 이름이 바뀜) 웹 서버에 해당 파일을 읽을 수있는 권한이 있는지 확인해야합니다. 마지막 코멘트에 대해서는

편집 2
: 이름 변경이 옵션을 선택하지 않으면 다음 아파치가 대신 역할을해야 파일이란 무엇 알려해야합니다. 따라서, 다른 규칙을 추가하므로 같은

RewriteEngine on 

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\/[^/]+\.php\ HTTP/ 
RewriteRule ^(.*)/[^/]+\.php$ http://%{HTTP_HOST}/$1 [R=301,L] 

RewriteRule ^products/?$ /products/products.php [L] 
+0

은 홈 페이지에서 작동하지만 예 : products.php와 같은 폴더에있는 다른 페이지에서는 403이 www.example.co.uk/products/products.php에 있습니다. 루트에있는 내 index.php에서 작동합니다 –

+0

빠른 응답을 보내 주셔서 감사합니다. 루트가 아닌 페이지에서 작동하지 않는 이유는 무엇입니까? –

+0

@Anish 내 몸 ID를 설정 한대로 페이지 이름을 변경할 수 없습니다. 그래서 나는 CSS를 사용하여 페이지를 타겟팅 할 수 있으므로 파일 이름을 변경할 수 없습니다. –

관련 문제