Htaccess не перенаправляет на новую базу

#apache #.htaccess #redirect

#apache #.htaccess #перенаправление

Вопрос:

Я хотел бы перенаправить все, что не начинается с /X , на /X , и, я пытаюсь сделать это, используя .htaccess with this content:

 RewriteEngine On
RewriteCond %{REQUEST_URI} ^(?!/X)
RewriteRule ^(.*)$ /X/$1
 

Чего мне не хватает?

РЕДАКТИРОВАТЬ:
я тоже пробовал:

 RewriteEngine On
RewriteCond %{REQUEST_URI} !^/X
RewriteRule ^(.*)$ /X/$1 [L]
 

и использование этого инструмента кажется, что это должно сработать, но, например www.site.com/style.css

Теперь это работает…

Ответ №1:

Пусть это будет так:

 RewriteEngine On

RewriteCond %{THE_REQUEST} !s/ alsiniga/X[/?s] [NC]
RewriteRule ^ /alsiniga/X%{REQUEST_URI} [L,R=301,NE]
 

Комментарии:

1. это тоже работает в валидаторе, но не на сервере

2. Тот онлайн-инструмент, который вы используете, совершенно бесполезен. Убедитесь в том, что вы тестируете только на своем собственном Apache. Если это не работает, пожалуйста, укажите свой полный URL-адрес, который не был перенаправлен?

3. конечно, «X» — это папка «alsiniga», URL — это http://localhost:8080/alsiniga/file.css … моя проблема в том, что внутри всех файлов в моем проекте используется абсолютный путь, это означает, что /alsiniga/index.html ссылается на /style.css то, что на самом деле находится внутри http://localhost:8080/alsiniga/style.css … Я добавил .htaccess in оба / и in /alsiniga/ , но это не работает… возможно, виртуальный хост apache имеет root /alsiniga/ и поэтому игнорирует htaccess in /