Мне нужно заставить все запросы независимо от того, что они представляют, в 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 отображается с логотипом.