2

我正在编写一个应用程序框架,它完全位于应用程序目录的子目录中。我们使用以下 htaccess 标记来添加我们想要的路径路由:

RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|assets)
RewriteRule ^(.*)$ /index.php/$1 [L]

可以看到,我们将整个 assets 文件夹对外开放,用于存放 css、js、图片等资源的静态 web 文件。

我们想要做的是有两个资产文件夹,一个在应用程序目录中,另一个在框架目录中。因此,在物理磁盘端,当用户请求到目录的路由时,都应该搜索/assets/*和的内容。/framework/assets/*/assets/*

简单来说,我们需要一个与我们兼容的重写条件来合并两个文件夹。谢谢!

4

3 回答 3

0

尝试:

# check if exists in frameowkr/assets
RewriteCond %{REQUEST_URI} ^/assets/(.*)$
RewriteCond %{DOCUMENT_ROOT}/framework/assets/%1 -f
RewriteRule ^(.*)$ /framework/$1 [L]

# check if exists in /assets
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^assets/(.*)$ - [L]
于 2013-10-03T15:35:44.310 回答
0

您需要填写文件/目录,但试试这个:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule  ^(.*)$  -  [L]

RewriteCond /PhysicalDirectoryPath/%{REQUEST_URI}  -f [OR]
RewriteCond /PhysicalDirectoryPath/%{REQUEST_URI}  -d
RewriteRule ^(.*)$  /WebDirectoryPath/$1  [L]

或者

RewriteCond %{REQUEST_URI} ^/.*?([^\/]+)$
RewriteCond /PhysicalDirectoryPath/%1  -f [OR]
RewriteCond /PhysicalDirectoryPath/%1  -d
RewriteRule ^(.*)$  /WebDirectoryPath/$1  [L]
于 2013-10-03T15:43:31.780 回答
0

尝试这个:

RewriteEngine on

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule /?assets/([^/]+) /framework/assets/$1 [L]

RewriteCond %{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} !-d
RewriteRule /?framework/assets/([^/]+) /assets/$1 [L]
于 2013-10-03T16:40:21.247 回答