Mod rewrite 用于多客户端应用程序的mod_重写espression

Mod rewrite 用于多客户端应用程序的mod_重写espression,mod-rewrite,url-rewriting,url-routing,Mod Rewrite,Url Rewriting,Url Routing,我有一个为多个客户服务的php应用程序。代码放置在域的根目录中,并为所有客户共享。每个客户都可以使用查询字符串参数id访问其页面 我需要一些建议和示例代码来说明如何通过mod_rewrite实现此路由,或者通过php路由脚本实现此路由的更好方法: 主页: 注意:main是main.php文件,不显示文件扩展名。 客户子文件夹不是真实的 内部页面使用其他参数,如: www.example.com/customerA/page1?id=1&par1=5 在服务器端,所有重写都应解释为www

我有一个为多个客户服务的php应用程序。代码放置在域的根目录中,并为所有客户共享。每个客户都可以使用查询字符串参数id访问其页面

我需要一些建议和示例代码来说明如何通过mod_rewrite实现此路由,或者通过php路由脚本实现此路由的更好方法:

主页:

注意:main是main.php文件,不显示文件扩展名。 客户子文件夹不是真实的

内部页面使用其他参数,如:

www.example.com/customerA/page1?id=1&par1=5
在服务器端,所有重写都应解释为www.example.com/main?id=4 没有虚拟子文件夹


谢谢。

以下是应该使用的方法:

RewriteRule ^/customerA /customerA/main?id=1 [QSA,NC,R=301,L]
RewriteRule ^/customerB /customerB/main?id=4 [QSA,NC,R=301,L]

RewriteRule ^/(customer(A|B))/main /main [QSA,NC]
我已经准确地回答了你的问题,我很确定这不是你想要的。 如果你有很多客户,我已经对一个关于电影的问题做出了巨大的回答,但你知道,这是关于客户的,但原则是完全一样的

如果您希望更通用,请执行以下操作:

# if URL is not a real file...
RewriteCond %{SCRIPT_FILENAME} !-f
# if URL is not a real folder...
RewriteCond %{SCRIPT_FILENAME} !-d
# ...and if adding "php" points to a real file...
RewriteCond %{SCRIPT_FILENAME}.php -f
# ...then rewrite internally with "php" extension:
RewriteRule (.*) $1.php [QSA,NC]

希望这能有所帮助。

因为我没有太多的客户,所以原则还可以。但它似乎没有按预期工作。我想对使用过的php文件使用更动态的重写规则。现在,您将main(实际上是main.php)编码到规则中。是否有办法使用规则中的任何*.php文件。修改了我的答案。希望这是好的;
# if URL is not a real file...
RewriteCond %{SCRIPT_FILENAME} !-f
# if URL is not a real folder...
RewriteCond %{SCRIPT_FILENAME} !-d
# ...and if adding "php" points to a real file...
RewriteCond %{SCRIPT_FILENAME}.php -f
# ...then rewrite internally with "php" extension:
RewriteRule (.*) $1.php [QSA,NC]