.htaccess多个文件夹和root

时间:2014-09-22 00:22:57

标签: php angularjs apache .htaccess mod-rewrite

有人可以帮我解决此应用程序格式的htaccess规则。

这是我的文件结构:

/api
  - /1.0 (this is a php project, a backend rest api of sorts to the frontend)
      - /other-php-folders
          - /...(lots of stuff)
      - /public
          - /...(lots of assets etc)
      - /index.php
      - /.htaccess (ignore for now)
/src (this contains an angularjs compiled website)
  - /assets
      - /cool-asset.js
      - /cool-asset2.css
      - /cool-asset3.png
  - /index.html
  - /.htaccess
/.htaccess

所以我基本上想从root .htaccess文件:

  • 将以“/ api /”开头的所有流量重定向到“/ api / *”。这包括所有资产。
  • 要转到“/ src / *”的所有其他流量。
    • 在/src/.htaccess中:我需要像往常一样查看/ src中的所有文件请求,但所有url请求只需转到index.html(RewriteRule ^ index.html [L])。

我还喜欢另一个不错的功能:

  • url:mydomain.com/api/latest链接到预定义的文件夹(例如/api/1.0),或者如果有办法从文件夹名称中找到最新版本号(但是计算它可能是太多的处理能力,因为它可以很容易地硬编码,并会有很多请求)。

任何帮助表示赞赏。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我提出了自己的解决方案,但有人可以发表评论并告诉我这是否合适(可行),或者是否有更好的解决方案。

干杯。

/。htaccess的

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/api
RewriteRule ^(.*)$ /src/$1 [L]

/src/.htaccess

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