apache - 重写 apache 2 的规则以与 angular js 一起使用

标签 apache mod-rewrite angularjs rewrite

显然,网络上有很多关于 mod 重写的讨论和答案。但是,我很难掌握它们。所以我想我会在这里问。

我要求重写规则来执行 Andy Joslin 在此处的评论中解释的内容:https://stackoverflow.com/a/11100438

这是我当前在 example.com 根目录下的目录结构

  • 应用程序/
  • app/index.html(angular js 应用程序的“根”)
  • api(这将是一个用于 'api' 的 symfony 2 应用程序。我将从 angular 向这里发送ajax 请求。)

  • 我想将所有请求重定向到 app/index.html,除了对/api 的请求。

    例如:

    http://example.com/categories/electronics/ipod实际上就像去http://example.com/app/index.html/categories/electronics/ipod

    但是,我希望 app/index.html 部分被隐藏。

    然后,对 http://example.com/api 的请求会出现异常。因为我需要向这些 url 路径发出 ajax 请求。

    感谢您的任何帮助/指导。

    最佳答案

    这里有一些东西可以帮助你(把它放在你的/.htaccess 文件中):

    Options +FollowSymLinks
    IndexIgnore */*
    RewriteEngine on
    
    # if a directory or a file exists, use it directly
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteCond %{REQUEST_URI} !/api
    
    # otherwise forward it to index.html 
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^app/. /app/index.html [NC,L]
    

    注意:对于较新的 Apache 版本,另请参阅下一个答案,它使用更简单的 FallbackResource

    关于apache - 重写 apache 2 的规则以与 angular js 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15284038/

    相关文章:

    javascript - AngularJS 计时器不会停止

    javascript - element.is() 在 Angular jqLit​​e 中等效

    php - 如何检查是否在 php 中启用了 mod_rewrite?

    PHP 无法检索大请求

    regex - .htaccess RewriteRule 正则表达式匹配特定单词

    .htaccess - 如何在 php 中使用 htaccess 更改已工作的 GET 查询并更改请求的 GET 数据

    url - 如何使用 mod_rewrite 将查询字符串转换为路径 URL?

    php - 无法更新到 php 5.4 - AWS ec2

    apache - 在 apache CXF 中发布文件和 JSON 数据

    javascript - Angularjs 过滤器允许空值使用自定义比较器不起作用?