Apache重写 - 搜索两个目录

时间:2013-10-03 15:28:03

标签: apache .htaccess

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

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

如您所见,我们向公众打开整个资产文件夹,以获取诸如css,js,图像等资源。静态网络文件。

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

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

3 个答案:

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

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

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