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

Перезапись Apache 2.2 - принудительно все запросы к index.html

Мне нужно заставить все запросы независимо от того, что они представляют, в index.html. К сожалению, все, что я пробовал, не работает должным образом.

Мне кажется, что это должно работать, но это не так. Насколько я понимаю, он говорит обо всем, что не заканчивается на /index.html, для фактического запроса файла index.html.

Перенаправить 302! ^ / Index.html http://www.example.com/index.html

Приветствуется любая помощь / разъяснение.

Используя .htaccess в корневой папке, это должно сработать:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule . /index.html [R=302,L]

Условие и правило таковы: если запрос не соответствует index.html, он перенаправит на него все, что угодно.

Ответ @prix хорош. Мне самому нужно было добавить условия, чтобы обычные ресурсы (изображения и CSS) обслуживались как обычно:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !\.(css|gif|ico|jpg|js|png|swf|txt|svg|woff|ttf|eot)$
RewriteRule . index.html [L]

Я проголосовал за другие ответы, но в итоге они мне не совсем помогли, потому что я включил логотип в файл index.html. Итак, вот мои корректировки. Прежде всего, предпосылки.

+ Изменить

AllowOverride None

к

AllowOverride All

в

/etc/apache2/apache2.conf
…
<Directory /var/www/>

чтобы включить файл .htaccess в /var/www/html (пример).


Создать или отредактировать файл

/var/www/html/.htaccess

с содержанием

RewriteEngine On

RewriteCond %{REQUEST_URI} ^.+/logo\.png$
RewriteRule . /logo.png [L]

RewriteCond %{REQUEST_URI} !^/index\.html$
RewriteCond %{REQUEST_URI} !^/logo\.png$
RewriteRule . /index.html [L]

Как видите, я не использую редирект. Это означает, что путь или URI, введенный пользователем, остается прежним; тем не менее, страница index.html отображается с логотипом.