我需要这样一个.htaccess文件,它允许我通过扩展(图像)直接访问某些文件,并且在任何其他情况下它检查是否存在entryPoint2.php,如果存在,则执行该文件,如果不存在,则执行entryPont.php。这是我到目前为止所做的:
Options +FollowSymLinks
Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.png|\.jpg|\.gif|\.jpeg|\.bmp|\.ico|\.flv|\.mpeg|\.mp4|\.mp3|\.swf)$
RewriteCond %{REQUEST_URI} !^/forum
RewriteCond %{REQUEST_URI} !^/assets/downloads
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/entryPoint2.php -f
RewriteRule ^(.*)$ entryPoint2.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ entryPoint.php [QSA]
RewriteRule ^robots\.txt$ http://www.example.com [R,NE,L]
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST} [L,R=301]
<Files .htaccess>
Order Allow,Deny
Deny from All
</Files>
图片有效,但我得到禁止&#34;错误,它寻找index.php
答案 0 :(得分:1)
你的要求结果比我最初想的要简单。 你需要的是一个白名单和一个简单的文件检查。
这应该做:
RewriteEngine on
RewriteRule \.(png|jpg|gif|jpeg|bmp|ico|flv|mpeg|mp4|mp3|swf)$ - [L]
RewriteCond %{DOCUMENT_ROOT}/entryPoint2.php -f
RewriteRule ^ entryPoint2.php [L]
RewriteRule ^ entryPoint.php
逐行说明:
entryPoint2.php
是否存在。
例如,如果DOCUMENT_ROOT
为/foo/bar
,则会检查/foo/bar/entryPoint2.php
是否存在。entryPoint2.php
,忽略.htaccess的其余部分。entryPoint.php
提供任何其他案例。你去。