2

我有我的 PHP 站点设置,每个站点都有一个文件夹(例如登录),其中有一个 Index.php 文件和站点特定的资产。但是,每个页面都需要的一些资产存储在位于最高级别正下方的“资产”文件夹中(这有意义吗?)。

我玩过 .htaccess 并得到了这个代码

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ http://janberktold.com/Assets/$1 [R=301,L]

但是,我的问题是:它重定向

本地主机/登录/test.css

本地主机/资产/登录/test.css

代替

本地主机/资产/test.css

如何让我的服务器重定向到正确的路径?

4

2 回答 2

3

尝试这个

RewriteEngine on
RewriteBase /

# Rewrite if the file does not exists
RewriteCond %{REQUEST_FILENAME} !-f

# Rewrite only if the URI does not starts with Assets
RewriteCond %{REQUEST_URI} !^/Assets

# Rewrite any assets file
RewriteRule ([^/]*).(css|js|png|jpe?g)$ Assets/$1.$2 [L]

这应该重写任何资产文件localhost/dir/file.csslocalhost/dir/dir2/file.csslocalhost/Assets/file.css

于 2013-10-21T00:31:31.773 回答
1

将您的规则替换为:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(?:[^/]*/)*([^/.]+\.(?:jpe?g|gif|bmp|png|tiff|css|js))$ /Assets/$1 [R=301,L,NC]
于 2013-10-21T12:31:26.513 回答