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:Arecss
和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>