对于下面的。htaccess文件,我显然会在加载脚本和css时得到很多404,因为浏览器一直在错误的目录中查找。
我是一个新手在htaccess和不知道如何解决它。
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^$ client/app/index.html [L]
</IfModule>
目录结构如下:
project/client/app/index.html
。
我建议您使用301重定向用户到正确的路径。这将以你的问题告终。
RewriteRule ^$ client/app/index.html [L, 301]
如果你担心seo,看看https://support.google.com/webmasters/answer/93633?hl=en
服务器上的所有调用都被重定向到您的RewriteRule
。添加一个RewriteCond
(rewriteconcondition)来忽略存在的CSS和JS文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^$ client/app/index.html [L]
解释:
RewriteCond %{REQUEST_FILENAME} !-f
如果请求的文件名存在(css/main.css
),请不要执行rewriterrules。
RewriteCond %{REQUEST_URI} !.(?:css|js|jpe?g|gif|png)$ [NC]
如果文件不存在,但匹配其中一个扩展名,则不执行任何操作。这很有用,因为如果css/main-2.css
不存在,您会得到404,而不是将您重定向到index.php
。
最后是你自己的规则,它重定向所有非条件规则
在您的.htaccess
文件中,这是为我工作的。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/index.html
RewriteCond %{REQUEST_URI} !.(?:css|js|jpe?g|gif|png)$ [NC]
RewriteRule ^ /index.html [R=301]
谢谢!