2014-11-04 57 views
0

我正在构建我公司的项目目录,这些项目将在本地(暂时使用MAMP)和我们的临时服务器上同时生活。使用RewriteCond在.htaccess中进行条件重定向

我想要做的是有一个单一的.htaccess将有条件地重定向取决于它被请求的地方。

我有第一部分工作正常 - 从临时服务器的根目录到我们的主页。

RewriteEngine On 

RewriteCond %{HTTP_HOST} staging.com 
RewriteRule (.*) http://www.homepage.com [R=301,L] 

这是我无法理解的部分。如果在根目录中查看本地服务器(例如http://102.168.0.27:8888),我想重定向到同一域中的文件夹(例如http://102.168.0.27:8888/directory)。仅当没有指定文件夹时,查看任何文件夹(http://102.168.0.27:8888/*)才应该重定向。

太复杂了,IP地址可能会改变,我不想更新它。我也不希望在该域上指定不应该重定向的文件夹;它应该是任何文件夹。

不同的重定向当地是很容易的,我只是不能让它满足文件夹我的要求:

RewriteCond %{HTTP_HOST} !staging.com 
RewriteRule (.*) /directory [R=301,L] 

总结:

  • 在升级服务器的根目录,重定向到主页
  • 本地,如果没有指定,则重定向到文件夹
  • 本地,如果指定文件夹,则不重定向
  • 不要指定地域/ IP
  • 不要指定文件夹名称
+0

所有本地envs使用8888端口?因为您可以将您的条件挂钩到 – yoavmatchulsky 2014-11-04 11:40:42

+0

是的,总是那个端口。我会去的。 – 2014-11-04 11:43:16

回答

1

使用本地环境的8888端口状态,试试这个:

RewriteCond %{SERVER_PORT} 8888 RewriteCond %{REQUEST_URI} ^/$ RewriteRule .* /directory [R=301,L]

其他文件/目录上本地服务器不应受此规则的影响。

+0

这似乎并不奏效。它根本不会重定向,即使在根目录下也是如此。 – 2014-11-04 11:58:04

+0

我已更新答案并将条件移至REQUEST_URI上 – yoavmatchulsky 2014-11-04 12:09:59