我有一个临时和生产 Apache 服务器。要访问临时,我只需转到www-staging.mysite.com/a/sub/directory
。要访问生产,只需删除-staging
中的www
。
目前,我暂存的所有链接都尝试与生产版本建立联系。我想在我的 .htaccess 文件中声明:
“如果在 www-staging 上,则将所有 mysite.com 请求修改为 www-staging.mysite.com”
.htaccess 文件对我来说就像一门外语,所以我真的很难弄清楚如何做到这一点。这是我当前的代码,它似乎对我的网站没有任何影响:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www-staging.mysite.com/$1 [L,R]
答案1
我相信您需要包含Options +FollowSymLinks
以下内容:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?mysite\.com$ [NC]
RewriteRule ^(.*)$ http://www-staging.mysite.com/$1 [L,R]
答案2
你真正需要的是不是在您的网站中使用绝对链接,仅使用相对链接。(即,您的网页http://www.mysite.com/foo/bar
不要使用像 这样的硬编码 URL /foo/bar
。
您要求重写内容但 Apache 却做不到这一点。
但是如果我错了,你确实使用了相对链接——你可以做一件事:为暂存和生产配置两个 VHost。如果你想消除重复,请使用 Include 语句。例如:
<VirtualHost *:80>
ServerName www.mysite.com
DocumentRoot /var/www/vhosts/www
Include conf.d/www.mysite.com.common
</VirtualHost>
<VirtualHost *:80>
ServerName www-staging.mysite.com
DocumentRoot /var/www/vhosts/www-staging
Include conf.d/www.mysite.com.common
</VirtualHost>
其中/etc/httpd/conf.d/www.mysite.com.common
定义了两个站点的一些通用设置。