.htaccess не пускает робота.txt через


У меня есть следующее .файл htaccess в корне:

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

Это работает как должно для сокращения всех моих URL-адресов до website.com/something

Проблема в том, что Google не может найти мой файл robots.txt в корне. Вышеупомянутый файл не пропускает его. когда он печатает website.com/robots.txt я получаю 404 не найден. Но если я закомментирую приведенный выше код .htaccess, я могу добраться до него просто отлично.

Как я могу отредактировать мой файл .htaccess, чтобы пропустить robots.txt, не вмешиваясь в мой другой URL-адреса?

4 2

4 ответа:

RewriteEngine on
RewriteRule ^robots.txt - [L]

Вторая строка исключает роботов.txt из правил перезаписи URL . Попробуйте выше код

Вы можете использовать это решение в своем .htaccess файл:

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

Это перезаписывает все ваши запросы на индексацию.php?page=, кроме файлов, указанных в списке RewriteCond.

Я попробовал оба предложения, и они оба отлично работают. Однако я пошел с ответом Кирана просто потому, что это более короткий синтаксис. Вот с чем я в итоге столкнулся.

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]

Найдите линию, которая уже существует в вашем .htaccess, который говорит следующее:

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

И измените его следующим образом:

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