我在.htaccess文件中有这个:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(gif|jpg|png|css|js|ico|flv|php|txt)$ index.php
现在我需要添加另一个规则,如果没有找到REQUEST_FILENAME,它将转发到index.html。
因此www.mysite.com将转发至index.html,www.mysite.com / file.html将转发至index.php。
答案 0 :(得分:2)
我通常使用这种重写规则:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
它会重写index.php中不存在的所有网址。
答案 1 :(得分:1)
只需添加另一条规则,不受URL路径结尾的限制:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !\.(gif|jpg|png|css|js|ico|flv|php|txt)$ index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html
但是使用默认错误处理可能会更好:
ErrorDocument 404 /index.html
否则,对于非现有文件的请求,您的服务器将不会使用404响应。