Php 如何正确写入my.htaccess以忽略文件夹

Php 如何正确写入my.htaccess以忽略文件夹,php,angularjs,apache,.htaccess,mod-rewrite,Php,Angularjs,Apache,.htaccess,Mod Rewrite,我一直在四处寻找关于我要做什么的消息。我有一个Angular.js应用程序,HTML5模式设置为true。所以我创建了一个.htaccess文件来运行 到目前为止,我有这个 # Rewrite Engine RewriteEngine On # Force HTTPS RewriteCond %{HTTP_HOST} !^www\. [NC,OR] RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] R

我一直在四处寻找关于我要做什么的消息。我有一个Angular.js应用程序,HTML5模式设置为true。所以我创建了一个.htaccess文件来运行

到目前为止,我有这个

# Rewrite Engine
RewriteEngine On

# Force HTTPS
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]

# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d 
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

我在/backend/文件夹中放置了一个管理面板,当我试图访问它时,我会不断重定向到/index.html

我认为这可能与:

“-d”(is directory)将TestString视为路径名并进行测试 它是否存在,并且是一个目录

到目前为止,我试图向文件中添加一个新条件,但到目前为止,我只收到500个内部错误

# Rewrite Engine
RewriteEngine On

# Force HTTPS
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]

# If an existing asset or directory is requested go to it as it is

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !^/backend/
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html

我的目标:如果我站在/backend/folder页面中,请使.htaccess忽略重写规则

谢谢您的帮助。

请尝试:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} ^/backend/
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
尝试:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_URI} ^/backend/
RewriteRule ^ - [L]

# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html


RewriteCond%{REQUEST\u URI}^/folder/to/exclude
。您能提供更多关于将其放置在何处的信息以及.htaccess的实际结构吗?当我放置代码时,当我访问/backend/时,它确实起作用,但我的frontpage上现在没有显示任何代码。它说找不到文件。编辑:这很奇怪,因为如果没有这个规则,如果我手动编写URL,它会工作,但是如果我单击管理链接,我会被重定向。你不应该在规则中使用
DOCUMENT\u ROOT
。您处理的是URL,文档根目录中的路径部分永远不会对外公开。“重写”实际上只适用于url中的内容,例如,
example.com/foo/bar/baz.html
将使用
foo/bar/baz.html
进行重写,而文件实际存在于
/home/sites/example.com/html/foo/bar/baz.html
中这一事实与此无关。当我删除
文档的根目录时,即使没有添加新的RewriteCond,我也会得到一个即时的内部500。只有一个
%{REQUEST\u URI}
(不是2):
RewriteCond%{REQUEST\u URI}^/后端/
重写cond%{REQUEST\u URI}^/folder/to/exclude
。您能提供更多关于将其放置在何处的信息以及.htaccess的实际结构吗?当我放置代码时,当我访问/backend/时,它确实起作用,但我的frontpage上现在没有显示任何代码。它说找不到文件。编辑:这很奇怪,因为如果没有这个规则,如果我手动编写URL,它会工作,但是如果我单击管理链接,我会被重定向。你不应该在规则中使用
DOCUMENT\u ROOT
。您处理的是URL,文档根目录中的路径部分永远不会对外公开。“重写”实际上只适用于url中的内容,例如,
example.com/foo/bar/baz.html
将使用
foo/bar/baz.html
进行重写,而文件实际存在于
/home/sites/example.com/html/foo/bar/baz.html
中这一事实与此无关。当我删除
文档的根目录时,即使没有添加新的RewriteCond,我也会得到一个即时的内部500。只有一个
%{REQUEST\u URI}
(不是2):
RewriteCond%{REQUEST\u URI}^/后端/
使用这部分代码,主页将返回404,后端将重定向到主页并返回404。如果我手动进入URL栏,所有其他页面仍然有效。注意:您是否已清除缓存或尝试使用其他浏览器?是,但不起作用。。。有趣的是,当我用我的初始htaccess手动输入complet链接时,一切都很好。我认为可能是“Angular.js html5mode”问题导致了重定向。我的Angular应用程序在根目录上运行,我的代码基于此示例来设置我的.htaccess。但是如果用户访问/后端/我使用其他类型的东西,我想忽略当前的规则。有了这部分代码,主页得到404,后端重定向到主页,返回404。如果我手动进入URL栏,所有其他页面仍然有效。注意:您是否已清除缓存或尝试使用其他浏览器?是,但不起作用。。。有趣的是,当我用我的初始htaccess手动输入complet链接时,一切都很好。我认为可能是“Angular.js html5mode”问题导致了重定向。我的Angular应用程序在根目录上运行,我的代码基于此示例来设置我的.htaccess。但是如果用户访问/后端/我使用其他类型的东西,我想忽略当前的规则。