我的开发环境设置为使用单个主机(localhost
)。我正在我的机器上开发多个网站,每个网站都存储在自己的目录下,如下所示:
/var/www/site1
/var/www/site2
...
我的计算机上的文档根目录设置为/var/www
。
我正在对大多数这些网站使用网址重写,大多数.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]
选项的重写规则。
谢谢!
此致 卢西恩
答案 0 :(得分: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
中。