【问题标题】:URL rewrite with htaccess gets 404 error - AngularJS html5 mode使用 htaccess 重写 URL 得到 404 错误 - AngularJS html5 模式
【发布时间】:2019-11-10 04:17:43
【问题描述】:

删除 # 和 ! 后 Angular js 页面刷新 404 错误来自网址

我正在处理一个 angular(1.7.5) 项目,我想在其中删除 # 和 !从 URL,为此,我使用以下代码

myApp.config(['$locationProvider', function ($locationProvider) {
     $locationProvider.html5Mode(true);
}]);

并在根文件夹的 index.html 中添加 base 标签

<base href="/myApp/">

和.htaccess文件

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !index
RewriteRule (.*) index.html [L]

最后,我删除了 # 和 !来自 URL,但问题是当我刷新页面或在新选项卡中打开相同的 URL 时,页面会出现 404 错误,

http://localhost/dev/ ----- works fine

但是

http://localhost/dev/login ----404 error 

我不知道如何解决这个问题,请帮我谢谢。

【问题讨论】:

    标签: javascript html angularjs apache .htaccess


    【解决方案1】:

    尝试像这样修改.htaccess规则:

    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^ index.php [L]
    

    【讨论】:

      【解决方案2】:

      您需要修改您的.htaccess。问题是您当前的规则仅转发 URL 中的第一个路径。相反,您需要让它转发 所有 嵌套路径。

      RewriteEngine On  
      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
      RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
      RewriteRule ^ - [L]
      
      RewriteRule ^ /index.html [L]
      

      【讨论】:

        猜你喜欢
        • 2014-06-02
        • 2013-11-26
        • 2017-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-12
        • 1970-01-01
        相关资源
        最近更新 更多