我开发了一个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]
答案 0 :(得分:0)
VirtualHost
或Alias
指令应该修复它。
答案 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>