32

如何使用 htaccess 文件将所有页面(仅限页面)重定向到 index.html,而不是重定向图像文件。出于某种原因,我正在使用此代码,并且 index.html 页面上的图像文件没有显示出来。

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule .* /index.html [L,R=302]
4

5 回答 5

103

试试这个代码:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteRule .* /index.html [L,R=302]
于 2013-07-17T20:26:40.350 回答
17

保持你的规则简单。不要过滤不应该匹配的内容,只需匹配文件即可。

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/index.html$
RewriteRule .*\.(php|html)$ /index.html [L,R=302]
于 2013-07-17T20:35:02.147 回答
10

更好的方法可能是忽略现有文件。例如:

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* / [L,R=302]

!-d如果存在满足匹配的现有目录,则表示忽略重写。

!-f如果存在满足匹配的现有文件,则表示忽略重写。

其他一切都会被重写。

于 2018-09-10T02:56:53.263 回答
2

您需要.htaccess在目录中添加一个文件public,因此每当您构建应用程序时,它都会自动复制到新dist目录中。的内容.htaccess应该是这样的:


RewriteEngine On
RewriteBase /
RewriteRule ^index.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

于 2019-09-20T21:53:47.927 回答
1

在最后一行之前添加以下内容

RewriteCond %{REQUEST_URI}  !(\.png|\.jpg|\.gif|\.jpeg|\.bmp)$
于 2013-07-17T20:29:03.210 回答