多个重写规则,尝试A然后B

时间:2013-12-09 15:12:55

标签: .htaccess

我有以下目录结构:

root
--/inc
--/img
--/docs
---/public
----/contact
-----/img
------telephone.jpg
-----contact.php
---/private

我的目标是让'docs'下的每个文件夹成为'包含'的网页。每个文件夹都有自己的/img/文件夹和/bin/文件夹,其中可以包含从Mp3到PDF的任何内容。

目前我正在将所有内容路由到index.php,然后从那里手动重定向文件。但事实证明这非常缓慢。在我的.htaccess中,我想的更快就会是这样的,如果说,图片试图通过/contact/telephone.png访问:

try /img/{url_path}
Otherwise, try /docs/$1/img/$2
Otherwise route through index.php

我怎么能这样做?目前我的.htaccess如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# if file not exists
RewriteCond %{REQUEST_FILENAME} !-f
# if dir not exists
RewriteCond %{REQUEST_FILENAME} !-d
# avoid 404s of missing assets in our script
#RewriteCond %{REQUEST_URI} !^.*\.(jpe?g|png|gif|css|js)$ [NC]
RewriteRule .* index.php [QSA,L]
</IfModule>

任何帮助表示赞赏!感谢

1 个答案:

答案 0 :(得分:0)

您可以在DOCUMENT_ROOT/.htaccess文件中执行以下操作:

RewriteEngine On

# check if this image path exists in docs/<folder>/img first
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/docs/$1/img/$2 -f
RewriteRule ^([^/]+)/(.+?)/?$ /docs/$1/img/$2 [L]