2014-02-21 1 views
0

사이트의 홈페이지 URL에서 색인 확장을 어떻게 삭제 하시겠습니까? 내가 내 사이트로 이동하면 URL은 www.example.com/으로 표시되고 나중에 예를 들어 about 페이지를 클릭하고 href가있는 로고를 클릭하면 홈 페이지로 돌아간 다음 www가 표시됩니다. example.com/index - 인덱스 페이지에서 단순히 제거하는 방법이 있습니다.내 홈페이지의 홈페이지 URL 확장자를 제거하거나 색인을 생성하는 방법은 무엇입니까?

나는이 도움이 경우 .PHP 파일 확장자를 제거하기 위해 농 제공 htaccess로 파일 ifModule을 사용하고

:

<IfModule mod_rewrite.c> 
RewriteEngine on 

# Redirect to PHP if it exists. 
# e.g. example.com/foo will display the contents of example.com/foo.php 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule ^(.+)$ $1.php [L,QSA] 

</IfModule> 

어떤 도움이 좋을 것! 감사합니다

답변

1

이 규칙 :

RewriteRule ^(.+)$ $1.php [L,QSA] 

는 요청 된 URL의 내부 다시 쓰기를 수행한다. 즉, 재 작성으로 인해 생성 된 URL의 변경 사항은 클라이언트에 표시되지 않습니다.

즉, HTML에 정상적인 "php is visible"링크가 포함되어 있으면 사용자가 자신의 주소가 잘못 표시되는 것을 의미합니다. 따라서 모든 클라이언트 측 링크는 다시 작성된 no-php 버전이어야합니다.

<a href="/">..</a> This is ok - no php visible, user see http://example.com/ 
<a href="/index">..</a> Also ok: http://example.com/index 
<a href="/index.php">..</a> Nope: user sees http://example.com/index.php 
3

간단한 당신이 /index 일치 아파치 RewriteRule의를 추가하고 리디렉션 할 수 있습니다, 그렇지 않으면 ... 당신의 웹 사이트의 루트 index.php에서 /에 귀하의 로고에

<a href="/index">...</a> 
... becomes ... 
<a href="/">...</a> 

을 링크를 변경하는 것입니다 /로하는 301 HTTP 코드 :이 규칙은

RewriteRule ^(.*)index$/[R=301,L] 
+0

왜 301이 필요합니까? 그냥 다시 쓸 수 없니? –

1

당신은 당신의 첫 번째 규칙에로 배치 할 수 있습니다 어디에서 index.php를 제거/숨기기 :

RewriteCond %{THE_REQUEST} /index\.php [NC] 
RewriteRule ^(.*?)index\.php$ /$1 [L,R=301,NC,NE] 
관련 문제