我成功设法将所有请求重定向到我的网络服务器的子文件夹。
这是我使用的代码:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /public/$1 [L]
# redirect all urls that doesn’t have a
# trailing slash to urls with a trailing slash
# (this is my try)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1 [NC]
它完美无缺,因此以下重定向工作:
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
虽然它正确重定向,但地址栏中的实际网址是:
example.com/public/foo/
所以我的问题是:
希望它有意义。
答案 0 :(得分:0)
将此代码放在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
,因为不需要。