Apache htaccess重定向到带有尾随斜杠的子文件夹
我成功地将所有请求重定向到web服务器的子文件夹 这是我正在使用的代码: /.htaccess /public/.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/
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]