我一直在互联网上尝试多种解决方案,无法让重定向伏都教工作。
我的设置是使用jekyll构建的网站,我想将其作为mydomain.com/~user
使用。
文件夹结构
~user
- _site
- index.html
- folder1
- index.html
- folder2
- index.html
- other_stuff
我能够从mydomain.com/~user
重定向到mydomain.com/~user/_site
。所以,中途通过。当我尝试再次屏蔽并从URL中删除_site
时出现问题。我撞墙了。
基本上我想使用:mydomain.com/~user
并在浏览器中查看该网址,同时为mydomain.com/~user/_site/index.html
中的网页提供服务。其他链接也一样
Request See Served
======= ======= =======
mydomain.com/~user mydomain.com/~user mydomain.com/~user/_site/
mydomain.com/~user/folder1 mydomain.com/~user/folder1 mydomain.com/~user/_site/folder1
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/~user/_site/?
RewriteRule ^(.*)$ /~user/_site/$1
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule !^~user/_site(.*)$ /~user/_site$1 [L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule ^~user/_site(.*)$ /~user$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^mydomain\.com$
RewriteRule !^~user/_site(.*)$ /~user/_site$1 [L]
然而,所有这些
在调整proposed solution之后,我能够确定一个部分有效的变体
RewriteEngine On
RewriteBase /~user
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/_site/? [NC]
RewriteRule ^(.*)$ _site/$1 [L]
请注意,在最后两行中,我从正则表达式中删除了~user
。这会重定向所有子文件夹和页面,并允许访问~user
中的其他文件夹。
然而,"家庭" mydomain.com/~user
是唯一未重定向的。如果它存在,RewriteCond %{REQUEST_FILENAME} !-d
不允许对其进行处理。
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule ^/?$ _site/ [L]
要将主页(~user
)重定向到mydomain/~user/_site
,但它不起作用。并尝试了^/?$
和^$
的变体形式。但他们也没有工作。
想法?
答案 0 :(得分:1)
你应该这样试试。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/~user/_site/? [NC]
RewriteRule ^~user/(.*)$ /~user/_site/$1 [L]