Я пытаюсь перенаправить все запросы пользователя на мою индексную страницу, кроме того, который был направлен в корневую папку.
Так www.domain.com/page.ext
в порядке, пока www.domain.com/folder/page.ext
должен быть перенаправлен.
Вот мой .htaccess:
RewriteEngine on
RewriteRule ^([^/]+)/?$ /index.html [L]
ErrorDocument 404 /index.html
Это вызывает Internal Server Error
и я не знаю почему.
По сути, я хочу заставить пользователя обращаться только к странице index.html в любой ситуации.
Предложения?
РЕДАКТИРОВАТЬ:
Чтобы дать больше информации, вот моя структура сайта:
/
|-- index.html
|-- css
|-- site.css
|-- js
|-- site.js
|-- images
|-- img1.png
|-- img2.png
|-- img3.png
Как видите, это действительно просто.
Что мне нужно сделать, так это показать всегда мой index.html
(который использует css/site.css
, js/site.js
и изображения используются в css)
Так что неважно, какую страницу запрашивает пользователь, мой сайт должен показать индекс один. Это означает, что индекс должен отображаться даже в случае ошибки 404 и даже если пользователь запрашивает страницу в папке, которой не существует!
В пределах .htaccess
file, относительный путь к каталогу (или RewriteBase
, если он настроен) используется как для строки соответствия (у вас есть это право в вашем регулярном выражении, без ведущей косой черты), так и для строки замены.
Пытаться RewriteRule ^([^/]+)/?$ index.html [L]
Редактировать:
Чтобы избежать этого для ваших файлов изображений / js / css, вы можете использовать RewriteCond
чтобы предотвратить применение правила:
RewriteCond %{REQUEST_URI} !^/images [NC]
RewriteCond %{REQUEST_URI} !^/css [NC]
RewriteCond %{REQUEST_URI} !^/js [NC]
RewriteRule ^([^/]+)/?$ index.html [L]