所有客户的共同项目

时间:2012-09-17 15:15:14

标签: php project webshop

我开发了一个PHP网上商店项目,它为每个客户独立工作。意味着每个客户都安装自己的网上商店源文件,php。

我发现这是维护许多网站的杀手,因此我决定将网上商店的源文件放在服务器的公共位置,并在apache服务器上创建一个别名,以便所有www客户都可以访问它。

然后每个客户在自己的www文件夹中都有自己的配置文件,日志文件夹,模板文件夹等。

我成功完成了上述所有事情。但我的问题是网址。

网址如下所示: http://www.exampleshop.com/webshop/v1/index.php

我需要在网址中隐藏webshop / v1,因此它看起来如下: http://www.exampleshop.com/index.php

我玩url rewrite mod但它一直告诉index.php不存在,因为它在exampleshop.com的根目录中查找不正确的文件,它位于/ webshop / v1

有什么想法吗?的替代品。

希望有人可以提供帮助: - )


我成功完成了以上操作: - )

RewriteEngine On
#for admin pages redirection
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/admin/index\.php$ /webshop/v1/admin/$1 [L]

#for webshop pages redirection
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /webshop/v1/$1 [L]

上述方法有效,但唯一的问题是它无法识别索引文件。 当我去url而没有指定页面时它不起作用,因为索引文件不会工作。我必须输入完整的网址,例如webshop.com/index.php才能让它工作。

有没有办法删除扩展名: - )

解决方案也可以在url

中指定index.php
#if no file specified, forward to index
RewriteRule ^$   webshop/v1/   [L]
#if no file specified, forward to index
RewriteRule ^admin/$   webshop/v1/admin/   [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /webshop/v1/$1 [L]

2 个答案:

答案 0 :(得分:0)

VirtualHostAlias指令应该修复它。

答案 1 :(得分:0)

我会根据主机将请求路由到应用程序级别。

假设您的服务器上安装了文件,并且各个域指向此服务器,即customer1.com,customer2.com,customer3.com等。然后,在您的index.php文件中,只检测哪个域正在访问文件并根据需要切换配置设置。

您可以拥有一个将设置映射到域的数据库表,因此如果您不想使用基于文件的配置,则可以执行数据库查询和获取设置。

<强>更新

那么,在这种情况下,你想要一个.htaccess规则。请在您的根 .htaccess

中进行此操作
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$   webshop/v1/   [L]
    RewriteRule (.*) webshop/v1/$1 [L]
</IfModule>

这是在 / webshop / v1 / 目录中:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # for admin pages redirection
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^admin/(.*)$ /webshop/v1/admin/$1 [L]

    # for webshop pages redirection
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /webshop/v1/$1 [L]
</IfModule>