如果我有一个网站(www.domain.com)
在根目录中,我有一个index.php文件,它将站点重定向到www.domain.com/folder-1/folder-2/
如何使用.htaccess对地址栏中的URL隐藏文件夹1/文件夹2/?
(不能将站点文件从文件夹-2移动到站点的根目录。)
我已经尝试过了:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(/folder-1/folder-2)
RewriteRule (.*) /folder-1/folder-2$1但是我得到了这个错误:
This page isn’t working
domain.com redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS我也尝试过:
RewriteEngine On
RewriteRule ^/(.*)$ /folder-1/folder-2/$1但它完全没有任何影响
我也尝试过:
RewriteEngine On
RewriteRule ^folder-1/folder-2$ /?&%{QUERY_STRING}但它完全没有任何影响
发布于 2020-03-25 17:56:44
引用自mediatemple.net/community/products/dv/204643270/…的
…“将对一个子目录的请求定向到另一个子目录或主目录(文档根目录)。示例: example.com/folder1变为example.com/folder2或仅为example.com。”
是的,这就是URL重写所做的事情……
我有一个将站点重定向到www.example.com/folder-1/folder-2/的
如何使用.htaccess从地址栏中的
这是一个矛盾的问题。为了从地址栏中“隐藏”/folder-1/folder-2/,您需要再次将请求重定向回根目录!不用说,这并不是很有意义(除了“不可能”)。
使用URL重写,您可以在内部将请求从/folder-1/folder-2/重写回根目录(或者更确切地说,重写到根目录中的index.php )。但这并没有“隐藏”任何东西。
例如,要将请求/folder-1/folder-2/ (如上所述)重写回文档根目录中的/index.php,则可以执行以下操作:
RewriteEngine On
RewriteRule ^folder-1/folder-2/$ /index.php [L]请求的URL仍然保留在浏览器的地址栏中。它不是“隐藏”的。
你发布的指令暗示你有/folder-1/folder-2/<something>形式的请求-然而,你没有在你的问题描述中说明这一点?
文件夹%{REQUEST_URI}!^/(/folder-1/
-2)folder (.*) /folder-1/folder-2$1
你发布的指令试图做完全相反的事情,并将请求从根目录重写到/folder-1/folder-2 --也许这就是你真正想要做的?然而,这也将绕过“将站点重定向到www.example.com/folder-1/folder-2/的index.php文件”(如上面的#1所述)。这两个动作是冲突的。
要在内部将文档根目录中的所有URL请求直接重写为/folder-1/folder-2/,则可以执行以下操作:
RewriteEngine On
Rewrite ^([^/]+)$ /folder-1/folder-2/$1 [L]这假设所请求的<file>的形式为/<file>,其中URL只有1个路径深度。即。不是/<dir>/<file>。这就是在这种情况下防止重写循环的原因。
https://stackoverflow.com/questions/60838425
复制相似问题