2012-03-03 5 views
2

통해있는 robot.txt를 허용하지 않습니다 나는 내 루트에서 다음의 .htaccess 파일이 있습니다 : 그것은해야 내 모든 URL을 단축하기위한 website.com/something하기로htaccess로는

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase/
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L] 
RewriteRule ^([^/]*)$ index.php?page=$1 [NC] 

이 작동

문제는 Google에서 내 robots.txt 파일을 내 루트에서 찾을 수 없습니다. 위의 파일을 통해 그것을 허락하지 않습니다. 내가 website.com/robots.txt를 입력하면 404가 없습니다. 그러나 위의 코드를 .htaccess 코드로 주석 처리하면 괜찮습니다.

.htaccess 파일을 편집하여 다른 URL을 방해하지 않고 robots.txt을 처리하도록하려면 어떻게해야합니까?

답변

7
RewriteEngine on 
RewriteRule ^robots.txt - [L] 

두 번째 줄은 URL 재 작성 규칙에서 robots.txt를 제외합니다. 위의 코드를 시도하십시오.

1

당신은 당신의 .htaccess 파일에이 솔루션을 사용할 수 있습니다 :

Options +FollowSymlinks 
RewriteEngine on 
RewriteBase/
RewriteCond $1 !^(index\.php|images|robots\.txt) 
RewriteRule ^(.*)$ index.php?page=$1 [L] 

이것은 모든 요청을 index.php을 재 작성 페이지 =의 RewriteCond 목록에 지정된 파일을 제외하고.

1

나는 두 가지 제안을 모두 시도했으며 둘 다 훌륭하게 작동합니다. 그러나 짧은 구문 때문에 단순히 Kiran의 대답과 함께갔습니다. 이것은 내가 결국 함께했던 것이다.

Options +FollowSymlinks 
RewriteEngine on 

RewriteBase/

# remove trailing slash 
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L] 

# Allow Robots.txt to pass through 
RewriteRule ^robots.txt - [L] 

RewriteRule ^([^/]*)$ index.php?page=$1 [NC] 
+1

, 내가 얼마나 당신이 할 수있는 설명 하나의 파일뿐만 아니라 파일 및 폴더의 목록을 모두 제외하십시오! – linuxeasy

0

이 말한다 이미 htaccess로 존재 라인 찾기 :

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] 

를 그리고이로 변경 : 내 솔루션에서

RewriteRule ^itemap.xml$ index.php?route=feed/google_sitemap [L]