2011-05-25 61 views
0

我添加以下重写conf文件为我的虚拟主机:虚拟主机的conf文件重定向添加本地文件路径

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 
.... A bunch of aliases here 

该网站工作正常的WWW。但是如果你输入的域没有www。该网站将被重定向到www.example.com/home/example/public_html - 它会添加文件路径。我怎样才能防止这一点?

这里的别名:

Alias /index.php /home/cms/public/index.php 
Alias /skins/admin /home/cms/public/skins/admin 
AliasMatch ^/scripts/(\w+)/admin/(\w+)\.js /home/cms/modules/$1/scripts/admin/$2.js 
AliasMatch ^/scripts/(\w+)/(\w+)\.js /home/cms/modules/$1/scripts/$2.js 
Alias /scripts /home/cms/public/scripts 
AliasMatch (?i)^/flash/([A-Za-z]*)/([A-Za-z_]*).swf$ /home/cms/public/flash/$1/$2.swf 
Alias /css /home/cms/public/css 
Alias /thirdparty /home/cms/public/thirdparty 
RewriteEngine off 
<Directory /home/cms> 
    Order allow,deny 
    Allow from all 
</Directory> 
<Location /> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 
    RewriteRule ^.*$ /index.php [NC,L] 
</Location> 
+0

你能否提供一些关于你的别名的信息?请求应该像这样工作。 – 2011-05-25 21:08:18

+0

添加别名 – Ashley 2011-05-25 21:50:06

+0

您的虚拟主机可以配置更高级别的规则吗? public_html通常用于每个用户的配置。 – 2011-05-25 21:58:47

回答

0

documentation,你应该在正则表达式的本地路径,分组之前:

RewriteRule ^\/home\/example(.*) http://www.example.com$1 [R=301,L] 

而且根据文档:

在第一个RewriteRule [th e模式]应用 到 请求的(% - 解码)URL路径;后续模式为 应用于匹配的RewriteRule的最后一个 的输出。

这表明你有其他的RewriteRules之前。