Apache htaccess重定向到带有尾随斜杠的子文件夹

Apache htaccess重定向到带有尾随斜杠的子文件夹,apache,.htaccess,mod-rewrite,redirect,rewrite,Apache,.htaccess,Mod Rewrite,Redirect,Rewrite,我成功地将所有请求重定向到web服务器的子文件夹 这是我正在使用的代码: /.htaccess /public/.htaccess 它工作正常,因此以下重定向工作正常: example.com -> example.com/public/ example.com/foo/ -> example.com/public/foo/ example.com/foo/about.html -> example.com/public/

我成功地将所有请求重定向到web服务器的子文件夹

这是我正在使用的代码:

/.htaccess /public/.htaccess 它工作正常,因此以下重定向工作正常:

example.com                 -> example.com/public/
example.com/foo/            -> example.com/public/foo/
example.com/foo/about.html  -> example.com/public/foo/about.html
顺便说一下,以下重定向有一个问题:

example.com/foo             -> example.com/public/foo
虽然重定向正确,但地址栏中的实际URL为:

example.com/public/foo/
所以我的问题是:

从URL重定向时,如果没有正斜杠,如何获得干净的URL?
希望它有意义

将此代码放在root.htaccess中:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [R=301,L]

RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/$1/ [L]

然后只需删除
/public/.htaccess
,因为这是不需要的。

/public/foo/
是一个实际目录<代码>/foo/不是。对不起,我可能不够清楚;我只想要一个干净的url(没有
public
),我不在乎后面的斜杠。实际上,在我的“try”中,我试图在实际文件夹中添加一个尾随斜杠,希望它能重定向到一个干净的url。
example.com/public/foo/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [R=301,L]

RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/$1/ [L]