1

我的开发环境设置为使用单个主机 ( localhost)。我正在我的机器上开发多个网站,每个网站都存储在自己的目录下,如下所示:

     /var/www/site1
     /var/www/site2
     ...

文档根目录/var/www在我的机器上设置为。

我正在为这些网站中的大多数使用 URL 重写,并且大多数.htaccess文件将以不同的方式将子目录重写为GET参数,如下所示:

http://localhost/site1/home/red -> http://localhost/site1/index.php?page=home&p1=red
http://localhost/site2/index/param1/param2/param3 -> http://localhost/site2/index.php?page=index&p1=param1&p2=param2&p3=param3

我也倾向于将其中一些网站复制到不同的目录下,当我这样做时,我必须对.htaccess我正在复制的网站的文件进行大量更改。

我想知道是否有一种方法可以定义一个包含网站根目录(不是主机的文档根目录)的常量,以及如何将其与重写规则一起使用,以便我只需要更改一行代码(复制网站时将此常量设置为不同的值)。

换一种形式,有没有办法执行与网站根目录而不是主机 / %{HTTP_HOST}(即网站的“主机”而localhost/site1不是localhost)相关的重写,如何做到这一点?

我已经尝试在脚本开头从每个请求中删除主机,并在脚本末尾添加它,但这不适用于使用该[L]选项的重写规则。

谢谢!

问候,卢锡安

4

1 回答 1

1

您可以使用以下规则制作一个 htaccess 文件:

RewriteEngine On
RewriteBase /site1/
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+) index.php?page=$1&p1=$2&p2=$3&p4=$4 [L,QSA]

并将其放在目录/var/www/site1中,如果您希望它适用于site2,请更改RewriteBase并将规则放入/var/www/site2

于 2012-09-04T05:04:59.380 回答