2013-07-11 3 views
1

.htaccess 파일을 사용하여 "www."를 추가하고 싶습니다. 없이 요청한 경우 모든 URL에 요청하지만 도메인을 정의하지 않고도이 작업을 수행 할 수 있으므로 편집하지 않고도이 코드를 여러 사이트에서 사용하고 싶습니다. 이것이 가능한가?URL 정규화 (.htaccess)

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    RewriteBase/

    RewriteRule ^sitemap\.xml/?$ sitemap.php [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule ^(.*)$ index.php?filename=$1 [L,QSA] 
</IfModule> 

답변

0

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 
+0

답장을 보내 주셔서 감사합니다. 그러나 도메인을 지정하지 않아도이를 수행 할 수있는 방법이 있습니까? 많은 웹 사이트에서이 코드를 사용하고 싶지만 코드를 수정하지 않고도 그렇게 할 수 있기를 바랍니다. –

+0

그 접근 방식의 문제점은 패턴 일치가 필요하다는 것입니다. 패턴 일치는 그 자체로 훌륭하고 .htaccess가 대부분 어떻게 작동 하는지를 나타냅니다. 하지만 일반적인 패턴과 일치하면 누군가가 foo.com을 입력하고 www.foo.com을 입력하는 것을 막을뿐만 아니라 foo2.com을 타이핑하고 www.foo2.com을 뱉어 버리는 것을 어떻게 막을 것입니까? www를 수정하려면 도메인을 제어해야합니다. 지정하지 않으면 urrororouter가 생성됩니다. –

+0

정말로 일반화하려는 경우 [A-z0-9] {3,} \. {1} [Az] {3,4} –

0

미안 해요, 내가 특별히 대답을 대답 할 수 있습니다. 내 권장 사항은 코드의 서버 측 선택으로이 작업을 수행하는 것입니다. 당신이 뭔가를 할 것 PHP에서

...

$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME']; 
$url = explode(".", $host); 
if (count($url) == 2){ 
    //no subdomain found 
    redirect("www.".$host); 
} 

업데이트 :이 example.co.uk 같은 도메인 이름에 문제가해야 할 것, 즉이 문제가 있는지 확실하지 않습니다 .... 나는 여전히 귀하의 사이트에 하위 도메인을 지원하려고했기 때문에 (따라서 www를 확인하고 추가하는 것만은 아닙니다.)

RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} !^www\..+$ [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

이 부가됩니다

0

HTML 5 상용구이 사용하는 "WWW를." 이미 하위 도메인이 있더라도