RewriteRules正在覆盖DirectoryIndex .htaccess指令

时间:2012-12-18 23:23:10

标签: php apache .htaccess mod-rewrite oxwall

我有以下.htaccess文件:

DirectoryIndex index.html

Options +FollowSymLinks
RewriteEngine On

AddEncoding gzip .gz
AddEncoding gzip .gzip
<FilesMatch "\.(js.gz|js.gzip)$">
  ForceType text/javascript
</FilesMatch>
<FilesMatch "\.(css.gz|css.gzip)$">
  ForceType text/css
</FilesMatch>

#RewriteCond %{REQUEST_URI} .*/http-bind
#RewriteRule (.*) /http-bind [L]

RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} !/ow_updates/index\.php
RewriteCond %{REQUEST_URI} !/ow_updates/
RewriteCond %{REQUEST_URI} !/ow_cron/run\.php
RewriteCond %{REQUEST_URI} !/index\.html
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.xml|\.feed|robots\.txt|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php

我希望.htaccess中的其他所有内容都能正常工作:将除!指定的请求之外的所有请求重定向到index.php。但是,我需要在第一次加载网站时加载index.html,然后他们继续加载index.php

所以我在开头添加了行DirectoryIndex index.html,然后添加了行RewriteCond %{REQUEST_URI} !/index\.html,希望当用户输入http://url.com时,他们会被带到index.html文件,他们会转到http://url.com/homepage这样的内页,这些内容都将由index.php处理。

然而,这不起作用。我使用的软件是Oxwall。该网站只是忽略第一行并继续加载index.php无论如何。我该怎么做才能解决这个问题?感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用会话或cookie轻松处理此问题。您可以将它始终重定向到index.php,在index.php中,您可以包含index.html文件以显示它们是否第一次访问。如果你将它们重定向到html文件它将无法工作(.htaccess会妨碍),但如果你包含该文件,那么它应该可以正常工作。