2012-05-31 4 views
1

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

# 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 и т.д.

я попробовать, но безуспешно.

Спасибо.

ответ

1

Поместите этот код в $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> 
+0

Отлично работает! Но так как вы написали это слишком быстро, была ошибка, поэтому я закончил с этой строкой: «RewriteCond% {ENV: REDIRECT_STATUS}! 200' и' RewriteRule (. *) Root/$ 1 [L] ' –

+0

Не возражаете, объясните зачем использовать redirect_status? Спасибо –

+0

Приятно знать, что он работает на вас. '% {ENV: REDIRECT_STATUS}! Фактически убедитесь, что внутреннее перенаправление применяется только один раз.Что происходило для вас, что оба правила применялись один за другим. Как вы можете видеть в RewriteLog, вы указали, что: «переписывать» приложение/активы/css/global.css '-> «root/application/assets/css/global.css» происходит, что отправляет каждый из них в root/ – anubhava

1

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

RewriteEngine on 

RewriteRule ^(css|js|images)(.*) application/assets/$1$2 [L] 

RewriteCond %{REQUEST_URI} !^/application/assets [NC] 
RewriteRule (.*) root/$1 [L] 

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

+0

Не работает. Он ничего не делает. Я даже пробовал внутри корневой папки. Он отправил его в /root/index.php/$1, и он считает, что 'css',' image' или 'js' являются контроллером, поэтому он явно не работает. Благодаря ! –

+0

Это должно быть уловлено до того, как оно отправится в root или root/index.php - можете ли вы опубликовать полный файл? – Ansari

+0

Все, что вы видите выше, это полный файл .htaccess. Я знаю, что это странно, например, я сказал, что попытался, но не смог заставить его работать, так как он ничего не делает, поскольку мой MVC считает, что я хочу использовать контроллер CSS или изображения на примере. –

Смежные вопросы