重定向到另一个文件夹

时间:2011-03-29 18:13:04

标签: php .htaccess mod-rewrite url-rewriting

我读了这个.htaccess rewrite to redirect root URL to subdirectory,我正在努力实现同样的目标。

投票率最高的解决方案是:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ store [L]

现在,看看这些评论看起来似乎运作良好。 问题是我不想硬编码任何路径(而是在“www.example.com”上面提供)。我希望.htaccess里面的projectname/重定向到projectname/public/,不管真正的服务器主机是什么。因此,如果我将projectname/放在www.pinco.com的根服务器中,它会重定向到www.pinco.com/projectname/public/,但会显示www.pinco.com/projectname/

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

尝试添加此行,并且:

RewriteBase /projectname

你留在项目中。

答案 1 :(得分:0)

您找到的示例实际上是做了两件不同的事情。

# This is actually just redirecting all http://example.com/somepage/
# to http://www.example.com/somepage/, to ensure all URLs have the www.
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]  

第二次重写将帮助您实现您想要做的事情。

# This redirect all requests for http://example.com -> http://example.com/newdir
# If you are looking to redirect the request, so the URL contains directory name,
# you can change the [L] to [R=301,L]
RewriteRule ^$ /newdir [L]

# If your concerned about direct access to a particular page without the sub-dir 
# you will want to add something like this
RewriteCond %{REQUEST_URI} !^/newdir
RewriteRule (.*) /newdir$1 [R=301,L]

因此,在这种情况下,您不必担心应用程序正在运行的域。