如果文件夹不存在,Apache .htaccess重定向

时间:2012-02-08 14:45:29

标签: apache .htaccess redirect http-status-code-404

我有一个网站,我需要做以下

如果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]

以上重定向到主页,但如何在/之后阅读网址并按上述方式进行重定向?

2 个答案:

答案 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)。