Php 类似域的htaccess重写规则

Php 类似域的htaccess重写规则,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我有很多域需要指向一台服务器,它们都有一个类似的域,每个域上的城市都会发生变化 每个城市都在服务器上的一个单独文件夹中,因此例如/newyork将是“shoppinginnewyork.com”和/california“shoppingincalifornia.com” 有没有一种方法可以让我为任何未来的域设置一个正则表达式规则,这样它就可以自动选择城市并重定向或重写到新域?他们都会从“购物”开始 谢谢您可以在VirtualHost的ServerAlias指令中使用通配符: 查看以下apache

我有很多域需要指向一台服务器,它们都有一个类似的域,每个域上的城市都会发生变化

每个城市都在服务器上的一个单独文件夹中,因此例如/newyork将是“shoppinginnewyork.com”和/california“shoppingincalifornia.com”

有没有一种方法可以让我为任何未来的域设置一个正则表达式规则,这样它就可以自动选择城市并重定向或重写到新域?他们都会从“购物”开始


谢谢

您可以在VirtualHost的ServerAlias指令中使用通配符:

查看以下apache
virtualHost
配置:

<VirtualHost *:80>

  ServerAlias shoppingin*.com

  DocumentRoot "/sites"

  # Then rewrite subdomains into different directories
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^shoppingin(.*).com$
  # Use the %1 captured from the HTTP_HOST
  # For example shoppinginnewyork.com writes to /sites/newyork
  RewriteRule ^(.*)$ "/sites/%1/$1" [L]
</VirtualHost>

ServerAlias shoppingin*.com
DocumentRoot“/站点”
#然后将子域重写到不同的目录中
重新启动发动机
重写cond%{HTTP_HOST}^shoppingin(.*.com)$
#使用从HTTP_主机捕获的%1
#例如shoppinginnewyork.com写信给/sites/newyork
重写规则^(.*)$“/sites/%1/$1”[L]

在本地机器上对两个域进行了测试。

所有域都指向同一目录还是不同目录?每个站点都位于不同的目录中,即/sites/newyork和/sites/california您可以尝试在重写中使用regexp,例如这样的
shoppingin(.*)\.com
在“重写条件”中,并在您可以使用“重写规则”中的此
$1
更新请求后,如果下一个条件检查存在目录没有错误,请使用此输入。检查此链接可能有助于解决您的问题answer@Martin有%1和$1-%1将匹配http主机的(*),而$1将重写特定文件夹的url…哈哈,抱歉,再次查看我的眼睛以前看到的是两个百分号,而不是一个百分比和一美元。谢谢你提供的信息:)