Apache RewriteCond和RewriteRule为现有文件和目录跳过

Apache RewriteCond和RewriteRule为现有文件和目录跳过,apache,.htaccess,mod-rewrite,virtualhost,url-redirection,Apache,.htaccess,Mod Rewrite,Virtualhost,Url Redirection,我的本地站点有以下目录结构 mysite |_ css |_ images |_ logo.png |_ js |_ app |_ index.php |_ .htaccess 我正在尝试Apache URL重写以重定向到http://mysite.dev/app/index.php用于不存在的目录。 例如,http://mysite.dev/en/home将被重写为http://mysite.dev/app/index.php 我已在我的.htaccess文件中尝试了此重写规

我的本地站点有以下目录结构

mysite
|_ css
|_ images
    |_ logo.png
|_ js
|_ app
    |_ index.php
|_ .htaccess
我正在尝试Apache URL重写以重定向到
http://mysite.dev/app/index.php
用于不存在的目录。 例如,
http://mysite.dev/en/home
将被重写为
http://mysite.dev/app/index.php

我已在我的
.htaccess
文件中尝试了此重写规则:

Options -Indexes
DirectoryIndex index.php index.html index.htm

<IfModule mod_rewrite.c>
   RewriteEngine on

   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^ app/index.php [L]   
</IfModule>
我的目标是,如果存在任何文件或目录,则跳过该规则。 为此,我如何编写
RewriteCond
RewriteRule

[编辑]
我发现了问题。这是因为我为我的站点添加了虚拟主机。我在
httpd vhost.conf
中有以下代码行:

<VirtualHost mysite.dev>
    DocumentRoot "C:/xampp/htdocs/mysite"
    ServerName mysite.dev
    ServerAlias mysite.dev
    <Directory "C:/xampp/htdocs/mysite">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

DocumentRoot“C:/xampp/htdocs/mysite”
ServerName mysite.dev
ServerAlias mysite.dev
命令允许,拒绝
通融
当我浏览
http://mysite.dev/images/logo.png
RewriteCond
工作不正常
但是当我删除虚拟主机并浏览
http://localhost/mysite/images/logo.png
,工作正常,图像显示正确


我不确定虚拟主机和重写COND的问题和冲突是什么,在您的虚拟主机指令中,您需要有:


DocumentRoot“C:/xampp/htdocs/mysite”
ServerName mysite.dev
ServerAlias mysite.dev
AllowOverride文件信息
命令允许,拒绝
通融

htaccess文件在哪里?您确定Apache可以看到
images/logo.png
?如果没有,Apache会将其视为不存在。如果删除重写规则,主机是否可以提供
mydomain.com/images/logo.png
?打开重写日志@Sithu:Are
css
images
真实目录或一些符号链接。
css
images
js
是真实的目录,
images/logo.png
对Apache也是可见的。我必须检查apache配置或Windows主机配置,因为它在另一台PC上工作得非常好,甚至没有
RewriteRule^(images | css | js)
<VirtualHost mysite.dev>
    DocumentRoot "C:/xampp/htdocs/mysite"
    ServerName mysite.dev
    ServerAlias mysite.dev
    <Directory "C:/xampp/htdocs/mysite">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
<VirtualHost mysite.dev>
    DocumentRoot "C:/xampp/htdocs/mysite"
    ServerName mysite.dev
    ServerAlias mysite.dev
    <Directory "C:/xampp/htdocs/mysite">
        AllowOverride FileInfo

        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>