ExpressionEngine:mod_rewrite目录到子域,同时删除/index.php/

时间:2011-06-07 20:33:01

标签: mod-rewrite subdomain expressionengine

在ExpressionEngine中,将目录mod_rewrite到子域名的最佳方法是什么,同时保持index.php不在图片中?

例如:

http://www.domain.com/index.php/group/template - > group.domain.com/template

我已经看到任何组的变体并将它们重写为子域,但我只需要一个。

我的任务是从不同的服务器(也运行EE)移植子网站。通常情况下,我只是将group.domain.com重定向到domain.com/group(index.php删除工作已经开始),但这被认为是一种不可接受的解决方案。当然,这是时间敏感的。

我已经潜入谷歌和EE docs / wiki进行了12个小时,我开始睁大眼睛了。任何人都可以帮我一把吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

以下是我将如何制作您的.htaccess文件:

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^/(group|group/.*)$
    RewriteRule ^(.*)$ http://group.domain.com/template/$1 [L]

    RewriteCond %{REQUEST_METHOD} !=POST
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

此示例使用"File and Directory Check" Method从URL中删除index.php并使用RewriteCond Directive指示Apache以不同方式处理对“group”目录及其所有子目录的请求

domain.com/group/template的所有链接都将重定向到group.domain.com/template/

如果您关心让抓取工具知道您的内容已移动并希望尽可能无缝地进行转换,则可以向您的RewriteRule添加301 Redirect

    RewriteCond %{REQUEST_URI} ^/(group|group/.*)$
    RewriteRule ^(.*)$ http://group.domain.com/template/$1 [R=301,L]

这将确保用户和搜索引擎定向到正确的页面。