ecshop在godaddy虚拟主机url重写失败

2009-12-14 18:07 来源:www.chinab4c.com 作者:ecshop专家

   ecshop电子商务的url重新在godaddy虚拟主机下,还真是有问题.不论你如何去开启后台设置。总是没用.去论坛找了不少帖子,才找到了最终的解决办法。ecshop的url重写问题确实很复杂

   

以下假设:

根目录: /aa
你网站目录: /aa/bb

一,如果你是架设的虚拟主机

你可能是这样访问你的站点的: http://xxx.com

你的网站目录可能需要如下规则(httpd.conf)

<Directory /aa/bb>
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>


不过为安全性考量 AllowOverride All 你不必设置为All. 参考如下:
All: 全部权限可重写
AuthConfig: 网页验证权限可重写
Indexes: Indexes重写
Limits: 允许Order Allow,Deny管理权限的重写
None: 不可重写

所以,当你的目录下的规则的 AllowOverride 设为 None 时,你网站目录下官方提供的 .htaccess 是不起作用的. 如果你开始不熟悉,建议设为 All 好了.不过你可能要经过你的虚拟主机提供方系统管理人员的同意.

其实, 在 httpd.conf 里, 有段对 DocumentRoot 的目录规则:

DocumentRoot /aa

<Directory /aa>
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    #
http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
   
AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
    Order allow,deny
    Allow from all

</Directory>

如果你的网站目录在 /aa 目录下 , 你可以直接把上面红色的 设为 All .那么,我一开始说的那个 "你可能需要如下规则" 的那块就可以不需要了,因为/aa 目录下的AllOverride会被继承到 /aa/bb 目录.

因为你的是虚拟主机,因此肯定会有你的主机配置:

<VirtualHost *:80>
ServerAdmin XXX@XXX.com
DocumentRoot /aa/bb
ServerName xxx.com
</VirtualHost>


你可能是这样访问你的站点的: http://xxx.com
看到 DocumentRoot /aa/bb 这句了吗?
在官方提供的 .htaccess 文件里有这句: RewriteBase / , 呵,它在虚拟主机里这样写是对的,因为虚拟主机配置规则里声明了 DocumentRoot了, 因此在 .htaccess 文件里用 / 代替网站目录.而这里,正是许多在本机配置url重写不成功的原因.

二, 非虚拟主机

你可能是这样访问你的站点的: http://localhost/bb

1, 像 上面的 "一" 里一样, 你需要让你的 /aa/bb 这个目录支持 .htaccess 里的权限重写.
2, 你需要对 .htaccess 文件作一处更改:

RewriteBase /

改为:

RewriteBase /bb



补充:

为安全性考量 AllowOverride All 你不必设置为 All

官方提供的 .htaccess 文件只对两个权限作了重写 , 一个是 Limit , 一个是 FileInfo

Limit 是对模板做保护,禁止访问模板文件
FileInfo 是对 url 重写

因此, 你可以用 AllowOverride Limit FileInfo 代替 AllowOverride All

建议有问题时先看一下 apache 的错误日志.日志路径和文件名请看 httpd.conf 配置 "ErrorLog" .


^_^

最后: 如果你已经弄明白了,那么你应该知道当初我发这个帖子时错误在哪了...

其实,前面我做那些步骤都是对的,就是我缺少了最后一步,把 .htaccess 文件里的

RewriteBase /

改为:

RewriteBase /comsenz/ecs

香港公司注册咨询