2012-03-03 60 views
2

robot.txt的,讓我有我的根以下.htaccess文件:的.htaccess不通過

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

這工作,因爲它應該縮短我的網址,以website.com/something

的問題是Google無法在我的根目錄中找到我的robots.txt文件。上面的文件不會讓它通過。當它鍵入website.com/robots.txt我找不到404。但如果我註釋掉上面的.htaccess代碼,我可以很好地理解它。

如何編輯我的.htaccess文件讓robots.txt通過而不干擾我的其他URL?

回答

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 2012-03-04 05:00:27

0

發現已經存在於你的.htaccess寫着這行:

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

它改成這樣:

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