RewriteBase /folder1/folder2/
就其本身而言,RewriteBase
不做任何事情。该RewriteBase
指令覆盖了要在指令中的相对路径替换中使用的基本 URL 路径RewriteRule
。例如,给定以下内容:
RewriteBase /folder1/folder2/
RewriteRule ^foo$ bar [L]
如上所述,如果您请求,/foo
则请求将在内部重写,/folder1/folder1/bar
因为替换字符串bar
是相对的。这与陈述以下内容相同:
RewriteRule ^foo$ /folder1/folder2/bar [L]
这就是RewriteBase
指令所做的全部。您在这里并不需要它,但如果您愿意,您可以使用它。
这个文件位于“/folder1/folder2/”中,但它什么也不做......
您需要针对文档根目录的请求,因此您不能将此.htaccess
文件放在/folder1/folder2/
目录中 - 它根本不会做任何事情。.htaccess
位于任意位置的文件/folder1/folder2/.htaccess
仅针对对其/folder1/folder2/
及其所有子目录的请求。
通过它的声音,您希望在内部将所有请求从文档根目录重写到/folder1/folder2/
目录 - 有效地对用户隐藏/folder1/folder2/
。
为此,您需要在/.htaccess
位于文档根目录的文件中使用类似以下内容:
RewriteEngine On
RewriteRule !^folder1/folder2 /folder1/folder2%{REQUEST_URI} [L]
上面将任何尚未针对/folder1/folder2
该子目录的请求重写。
用户还需要能够包括../../etc/passwd
我不确定您打算如何“包含”它,但如果您指的是客户端 URL 路径,那么您不应该使用这样的相对 URL 路径。使用根相对 URL 路径,例如。/etc/passwd
(来自文档根目录)。
如何编写一个.htaccess
更改/folder1/folder2/
为/
请注意,此.htaccess
文件完全相反。它将请求/
(文档根目录)的 URL 更改为/folder1/folder2/
- 这似乎是您问题中的要求。您需要在内部链接中已更改/folder1/folder2/
为。/