.htaccess重写基本文件夹但不是内容

时间:2015-02-05 15:41:57

标签: apache .htaccess mod-rewrite url-rewriting rewrite

我使用的框架会将所有URL重写为index.php,除非文件或文件夹确实存在。

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]

但是,我有一个名为' media'的目录,以及一个网址为' / media'的网页。我需要这样做才能进入' / media'被路由到index.php,但查看了里面的内容'媒体'目录像往常一样显示。

所以:

http://example.com/some-page - routed through index.php (already does this)
http://example.com/media - routed through index.php as well
http://example.com/media/images/hello.jpg - asset served as usual

我试过了:

RewriteRule ^media$ index.php/media [PT,L]

这列出了'媒体'的内容。文件夹像往常一样。

RewriteRule ^media/$ index.php/media

这会导致重定向循环。

我不确定其他语法会起作用。

1 个答案:

答案 0 :(得分:1)

如果/media/images/hello.jpg是实际文件,那么RewriteCond %{REQUEST_FILENAME} !-f已经忽略了这一点。

如果不是,则将此规则放在现有路由规则之前

RewriteRule ^media/.+$ - [NC,L]