1

我花了过去 2 天搜索和了解 .htaccess 以将所有子域重定向到用户文件夹而不更改 url,但我一直遇到 3 个小问题。我真的很感激一些帮助

问题1)

如果我去http://www.example.com/users/foo它会自动将 url 重定向到http://foo.example.com/但如果我去http://www.example.com/users/foo/dashboard.php 它什么也不做,而不是重定向到http://foo.example.com/dashboard.php

这是我使用的代码:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /users/(.+)/\ HTTP/
RewriteRule ^users/([^/]+)/(.*)$ http://$1.example.com/$2 [R=301,L]

问题2)

如果我去http://foo.example.com/dashboard.php

它从http://www.example.com/users/foo/dashboard.php

但是如果我foo.example.com在地址栏中输入(在 Firefox 中)它(有时)会自动重定向到www.foo.example.com,我可以阻止www前缀吗?

这是代码

RewriteCond %{REQUEST_URI} !^/users/
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteCond %{HTTP_HOST} ([^.]+)\.example\.com
RewriteRule (.*) /users/%1/$1 [L]

问题3)

活动网站位于文件夹中,http://www.example.com/website但应该在 url 上可见http://www.example.com/(就像我从http://www.example.com/users/foo url 上获取信息一样http://foo.example.com/)。

4

1 回答 1

0

关于问题一,我只检查主机:

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^users/([^/]+)/(.*)$ http://$1.domain.com/$2 [R=301,L]

关于第二个问题,这是我从 drupal.htaccess文件中获得的修改规则:

# remove www prefix
RewriteCond %{HTTP_HOST} ^www\.(.+)\.domain\.com$ [NC]
RewriteRule ^ http://%1%.domain.com{REQUEST_URI} [L,R=301]

# redirect to the subdirectory
RewriteCond %{HTTP_HOST} !^www\.(.+)\.domain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.+)\.domain\.com$ [NC]
RewriteRule ^ user/%1%{REQUEST_URI} [L,R=301]

关于您的第三个问题,请在此处检查此问题:

RewriteCond %{HTTP_HOST} ^www.domain.com$
RewriteRule ^(.*)$ website/$1 [R=301,L]
于 2012-09-02T14:06:38.830 回答