2

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

文件夹服务器始终由 goto server/routes.php 保护

如果该文件或目录存在,则文件夹 public 可以自由转到任何地方。

如果 URL 是localhost/server(anything)它会使用 URL (anything)转到server/routes.php

如果 URL 是localhost/( 除了服务器之外的任何东西)并且 (除了服务器之外的任何东西) 不是公共文件或目录,它会使用 URL (除了服务器之外的任何东西)转到public/index.html否则如果(除了服务器之外的任何东西)是公开的文件或目录它转到公共/(除服务器之外的任何内容)即(文件或目录)

一些例子:

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

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

4

1 回答 1

4

把它.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 重定向尝试过其他任何操作,建议您清除浏览器缓存或使用您未用于浏览这些网站的其他浏览器以避免缓存。

于 2013-09-21T01:10:28.333 回答