我有一个网站,我需要做以下
如果http://example.com/user1不存在,请将用户重定向到http://user1.example.com
同样,http://www.example.com/user2应重定向到http://user2.example.com
这是否可以使用.htaccess文件?
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) http://%{HTTP_HOST} [R]
以上重定向到主页,但如何在/之后阅读网址并按上述方式进行重定向?
答案 0 :(得分:1)
尝试将以下内容添加到example.com网站根目录中的.htaccess
文件中。
RewriteEngine on
RewriteBase /
#if on example.com host
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
#and the directory/folder does not exist
RewriteCond %{REQUEST_FILENAME} !-d
#redirect to folder.example.com
RewriteRule ^(\w+)$ http://$1.%{HTTP_HOST} [R,L]
答案 1 :(得分:1)
RewriteCond %{SERVER_NAME} =example.com # prevent infinite redirection
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/([^/]+)$
RewriteRule .* http://%1.%{SERVER_NAME} [R]
REQUEST_URI
上有点繁琐的正则表达式确保只会重定向http://example.com/user1
方案的网址(而不是/user1/foo/bar
)。
请注意使用SERVER_NAME
代替HTTP_HOST
(后者is evil and should be avoided)。