gpt4 book ai didi

regex - 解释一下这个 .htaccess 片段

转载 作者:行者123 更新时间:2023-12-03 07:49:22 29 4
gpt4 key购买 nike

有人可以解释以下 htacess 行,我理解部分内容,但想要更深入的知识。作为注释,我假设它按预期工作,这目前还没有上线,我只是在阅读一些工作簿,这是打印的。

// Don't understand this line 
Options -Multiviews

// Don't understand this line
Options +FollowSymLinks

// Understand this line
RewriteEngine On

// Don't ~fully~ understand this line, esp. in context
RewriteBase /portfolio

// Don't ~fully~ understand this line
// I understand that its asking if the filename is a valid file or dir
// but is it overall saying if valid file or valid dir perform rewrite?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

// Don't understand, $1 is the STRING, and the rest the condition, but
// how do you read this condition?
RewriteCond $1 !^(index\.php|images|robots\.txt|css)

// Don't understand (but do understand the RewriteRule PATTERN REPLACE, but is it
// saying replace 'all' with index.php/all ?
RewriteRule ^(.*)$ index.php?/$1

最佳答案

Options -Multiviews 

这会禁用多 View Apache 选项。基本上,该选项允许服务器根据客户端接受的内容类型和语言使用不同的文件名在同一目录中查找内容。在这种情况下,该指令只是被禁用,以确保 Apache 不会提供任何意外的文件。

多 View 支持内容协商,对此进行了解释:http://httpd.apache.org/docs/current/content-negotiation.html

Options +FollowSymLinks

这可确保启用 FollowSymLinks 选项。此设置允许 Apache 跟踪目录中存在的符号文件链接(如果存在)。如果存在符号文件链接,使文件实际存在于服务器上的其他位置而不是所请求的位置,则存在此设置。

更长的解释:http://www.maxi-pedia.com/FollowSymLinks

RewriteBase /portfolio

此设置用于定义重写引擎使用的 url 的基本路径。当重写引擎重写 .htaccess 中的 url 时,它会删除当前目录的路径。 url重写完成后,会根据当前文件目录添加回来。但是,有时请求的 url 与服务器本身的目录结构的路径不同。 RewriteBase 告诉重写引擎当前目录的 URL 路径是什么。在这种情况下,例如,文件可以存储在/foo/bar中。 ,但可以通过浏览器访问它们 www.example.com/portfolio 。 RewriteBase 告诉引擎添加 /portfolio到 url,而不是 /foo/bar .

有关完整说明,请参阅:http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase (该 URL 还包含对 .htaccess 的其他重写部分的说明)。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

这些行确保任何实际存在的文件或目录的 URL 都不会被重写。 !在条件被否定之前。所以这两个条件应该读作ifNotFile AND ifNotDirectory .

RewriteCond $1 !^(index\.php|images|robots\.txt|css)

$1这里指的是实际重写的子模式捕获1。换句话说,就是(.*)捕获的部分。在重写规则中。基本上,此规则只是检查 RewriteRule 不会重写任何以“index.php”、“images”、“robots.txt”或“css”开头的 url。

RewriteRule ^(.*)$ index.php?/$1

这只是告诉重写引擎任何请求(当然,不会被重写条件阻止)都应该重写为 index.php?后面跟着实际的请求。就像你说的,一个请求foo/bar将会转发至index.php?foo/bar 。重点是允许 index.php 处理文件请求(可以通过 $_SERVER['QUERY_STRING'] 访问它们),这在 CMS 系统和框架中是非常常见的做法。

我希望这些解释能有所帮助。我对所有这些指令没有丰富的经验,因此可能存在轻微的不准确之处,如果有,请发表评论。

关于regex - 解释一下这个 .htaccess 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322833/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com