在我的Wordpress实例中,每个用户都有一个公开个人资料,我试图进行动态网址重写,允许用他的昵称作为子域名来访问用户个人资料。
例如:
username.example.com
应显示页面example.com/membres/username/profile
username.example.com/foo
应显示页面example.com/membres/username/profile/foo
www
子域名是一个例外,应该重定向到主域名。
另外,我需要使用https。
我在虚拟主机和DNS中添加了*.example.com
并获得了letsencrypt通配符证书。
以下是我在.htaccess中获得的内容:
RewriteEngine On
RewriteBase /
# www subdomain exception
RewriteCond %{HTTP_HOST} ^www.example\.com$
RewriteRule ^(.*)$ https://example.com [L,R=301]
# profile redirection
RewriteCond %{HTTP_HOST} ^([\w\d]+)\.example\.com$
RewriteRule ^(.*)$ http://example.com/membres/%1/profile/$1 [L,NC]
重定向的行为正是我需要的。 SSL也很好。
foo.mysite.com将我发送至https / example.com / membres / foo / profile
但我找不到像foo.example.com
这样保留网址的正确方法!
我使用[P]
标志尝试了一些示例,但此时我并不知道自己在做什么。
我该如何防止这种情况?
答案 0 :(得分:0)
要阻止外部网址重定向,您需要从目标网址中删除scheme
(https :: //)和主机名。
# profile redirection
RewriteCond %{HTTP_HOST} ^([\w\d]+)\.example\.com$
RewriteCond %{REQUEST_URI} !^/membres [NC]
RewriteRule ^(.*)$ /membres/%1/profile/$1 [L,NC]