mod_rewrite – я не могу заставить его работать, как я хочу

Спасибо за прочтение. Прежде всего, у меня есть один .htaccess внутри корневого каталога со следующим утверждением:

# Mod Rewrite <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ /root/ [L] RewriteRule (.*) /root/$1 [L] </IfModule> 

и внутри корневой папки я получил этот файл:

 # Mod Rewrite <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /root/index.php/$1 [PT,L] </IfModule> 

Кроме того, в папке /root я получил три папки: css , js и images .

Мое приложение предназначено для отделения от моей MVC-структуры (немного похоже на CodeGgniter). Итак, вот дерево:

 - application - my application files are there - root - css - js - images - grecko - my mvc framework files are there 

Например, я могу обновить свою фреймворк, не касаясь всего веб-сайта, который запускается под папкой приложения.

Во всяком случае, теперь я хотел бы переместить три папки, которые я сказал выше ( css , js и images ), и переместить их внутри /application/assets/ . Но поскольку все перенаправляется на /root/ , мне понадобится правило, которое позволяет запрашивать такой http://www.domain.tld/css/blabla.css для сопоставления /application/assets/css/blabla.css , и т.п.

Я пробовал, но безуспешно.

Благодарю.

Поместите этот код в $DOCUMENT_ROOT/.htaccess :

 <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^(css|js|images)(/.*|)$ application/assets/$1$2 [L,NC] RewriteCond %{ENV:REDIRECT_STATUS} !200 RewriteRule ^ root${REQUEST_URI} [L] </IfModule> 

Попробуйте поместить это в .htaccess вашего корневого веб-узла (а не в корневую папку):

 RewriteEngine on RewriteRule ^(css|js|images)(.*) application/assets/$1$2 [L] RewriteCond %{REQUEST_URI} !^/application/assets [NC] RewriteRule (.*) root/$1 [L] 

Избегайте посторонних пробелов.