RewriteCond%{REQUEST_FILENAME}!-f对.php文件不起作用

时间:2012-05-14 12:55:32

标签: php apache mod-rewrite

我有一个symfony 2网站,要求将所有网址重新写入文档索引。

此外,还有许多完全独立的“微型站点”,它们只是在Web目录中的自己的子文件夹中运行。我需要为任何指向微型网站子文件夹的网址添加重写异常

这是我的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/(microsite1|microsite2|microsite3)(.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ %{document_index} [QSA,L]
</IfModule>

这适用于微型文件夹中除.php文件之外的所有内容,即:

  • www.domain.com/microsite1/index.html --- works(显示index.html)
  • www.domain.com/microsite2/ --- works(显示index.php)
  • www.domain.com/microsite2/contact.php --- 不起作用(显示未找到symfony route错误)

的方法,另外:

  • www.domain.com/microsite2/images/ ---成功显示目录列表
  • www.domain.com/microsite2/images/image.jpg ---成功显示图片

2 个答案:

答案 0 :(得分:4)

您可能需要将apache配置更改为以下内容:

<VirtualHost *:80>
    ServerName server-name
    DocumentRoot /var/www/path/to/document/root
    <Location />
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteRule !\.(js|ico|gif|jpg|png|css)$ /index.php
    </Location>
</VirtualHost>

密切关注最后的RewriteRule ......

答案 1 :(得分:1)

保持简单 - 将此规则添加到.htaccess:

RewriteCond %{REQUEST_URI} ^/microsite1 [OR]
RewriteCond %{REQUEST_URI} ^/microsite2 [OR]
RewriteCond %{REQUEST_URI} ^/microsite3
RewriteRule ^.*$ - [NC,L]