使用RewriteCond在.htaccess中进行条件重定向

时间:2014-11-04 11:37:00

标签: .htaccess mod-rewrite

我正在构建我公司项目的目录,这些目录将在本地(暂时使用MAMP)和我们的登台服务器上运行。

我要做的是拥有一个.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
  • 不指定文件夹名称

1 个答案:

答案 0 :(得分:1)

将8888端口条件用于本地环境,请尝试以下操作:

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

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