htaccess configure for routing in php and angularjs


htaccess configure for routing in php and angularjs

所以基本上我想要根目录中的 2 个文件夹,一个是服务器,另一个是公共的。

文件夹服务器由始终转到服务器/路由保护.php

文件夹公共可以自由转到任何文件或目录,如果该文件或目录存在。

如果URL是本地主机/服务器(任何内容),则它与URL一起转到服务器/路由.php

如果URL是localhost/(除了服务器之外的任何内容)并且(除了服务器之外的任何内容)不是公共文件或目录,则它与URL一起进入 public/index.html除了服务器之外的任何内容),否则如果(除服务器以外的任何东西)是公共文件或目录,它将进入公共/(除服务器以外的任何东西),即(文件或目录)

一些例子:

  • 本地主机/服务器
    • 服务器/路由.php
    • $_SERVER['REQUEST_URI'] 为空
  • 本地主机/服务器/用户
    • 服务器/路由.php
    • $_SERVER['REQUEST_URI'] 是用户
  • 本地主机/服务器/用户?orderby=name
    • 服务器/路由.php
    • $_SERVER['REQUEST_URI'] 是用户吗?orderby=name
  • 本地主机
    • 网址为空
    • public/index.html
  • 本地主机/用户
    • 网址是用户
    • public/index.html
  • localhost/partials/users.html(该文件存在于 public/partials/users.html 中)
    • public/partials/users.html

我将如何在 .htaccess 中执行此逻辑?

将此.hatccess放在文件夹server

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /server/
RewriteRule ^routes'.php$ - [L]
RewriteRule . routes.php [L]
RewriteRule ^$ routes.php [L]

并将此.htaccess放在域的根文件夹中:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{DOCUMENT_ROOT}/public/$1 !-d [NC]
RewriteCond %{DOCUMENT_ROOT}/public/$1 !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /public/index.html [L]
RewriteCond %{DOCUMENT_ROOT}/public/$1 -d [NC,OR]
RewriteCond %{DOCUMENT_ROOT}/public/$1 -f
RewriteCond %{REQUEST_URI} !^/public/ [NC]
RewriteRule ^(.*)$ /public/$1 [L]

尝试一下这 2 组.htaccess,请记住,如果您早期使用 301 重定向尝试过其他任何方法,建议您清除浏览器缓存或使用您尚未使用的其他浏览器浏览这些站点以避免缓存。