mod_rewrite - 我不能让它像我想的那样工作

时间:2012-05-31 18:55:27

标签: php model-view-controller .htaccess apache2

感谢阅读。首先,我在我的根目录中有一个.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文件夹中,我有三个文件夹:cssjsimages

我的应用程序旨在与我的MVC框架分开(有点像CodeGgniter)。所以这是树:

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

像这样,我可以在不触及在应用程序文件夹下运行的整个网站的情况下更新我的框架。

无论如何,我现在要做的是移动我上面说的三个文件夹(cssjsimages)并将它们移到/application/assets/内。但由于所有内容都被重定向到/root/,因此我需要一条允许http://www.domain.tld/css/blabla.css之类的请求映射到/application/assets/css/blabla.css等的规则。

我确实尝试但没有成功。

感谢。

2 个答案:

答案 0 :(得分:1)

尝试将其放入网络根目录(而不是根文件夹)的.htaccess中:

RewriteEngine on

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

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

避免无关的空间。

答案 1 :(得分: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>