Назад | Перейти на главную страницу

htaccess перенаправляет все, кроме двух файлов

Кто-нибудь знает, как написать файл .htaccess, который будет перенаправлять ВСЕ трафик для ВСЕХ запросов на index.php, за исключением двух файлов.

И в этом процессе также перенаправляйте любой запрос без "www" на "www"

А также, могу ли я сделать .htaccess в корневом каталоге единственным основным, который будет использоваться, следовать, читать и т. Д. Так что мне не нужно помещать файлы .htaccess в каждую подпапку.

А также, следует ли ставить [NC] в конце этих директив?

Пытался:

DirectoryIndex index.php

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example.com$
RewriteCond %{REQUEST_URI} ! ^/robots\.txt$
RewriteCond %{REQUEST_URI} ! ^/googlestuff\.html$
RewriteRule ^/?$ "http\:\/\/www\.example\.com\/" [R=301,L]

но это не сработало ???

Вы ! должно быть прямо перед регулярным выражением, иначе apache ошибочно принимает его как собственный параметр и предполагает, что это шаблон. Ваш шаблон в самом правиле должен быть достаточно общим, чтобы соответствовать всему.

DirectoryIndex index.php

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteCond %{REQUEST_URI} !^/googlestuff\.html$
RewriteRule ^/?(.+) http://www.example.com/ [R=301,L]

Если вы хотите, чтобы запросы содержали www в имени хоста, вы должны сделать это отдельно, и именно здесь вы захотите использовать NC флаг:

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

Убедитесь, что нетAllowOverride Нет'в конфигурации веб-сервера для вашего виртуального хоста. Попробуйте установить 'AllowOverride All'.

Например, в debian веб-сервер по умолчанию настроен с 'AllowOverride Нет', не позволяющая отменять настройки с помощью .htaccess.

Кроме того, вам не нужно помещать .htaccess в подкаталоги, если настройки в этих каталогах остаются такими же, как и в родительской папке.