htaccess适用于不同环境的重写规则

时间:2018-08-31 08:11:50

标签: apache .htaccess url-rewriting

在我们的登台服务器上,有不同版本的PHP应用程序。每个版本位于不同的文件夹中,以便PM可以逐个功能批准。结构如下所示: - docroot - origin - develop - origin - feature - feature_1

URL如下所示: - http://dev.example.com/project/origin/develop - http://dev.example.com/project/origin/feature/feature_1/

本地开发如下: http://project.local/

现在我想重写URL。

http://project.local/foo/example1/example2

应移至

http://project.local/bar/example1/example2

我尝试了以下操作:

RewriteCond %{REQUEST_URI} foo/(.*)
RewriteRule ^foo/(.*)?$ /bar/$1 [R=302,L]

在本地环境下可以正常工作。 在登台服务器上,它从以下位置重定向: http://dev.example.com/project/origin/develop/foo/example1/example2

收件人:

http://dev.example.com/bar/example1/example2

不起作用。 有没有办法在本地和暂存环境中处理此问题?

1 个答案:

答案 0 :(得分:1)

问题是,在登台服务器上,您将此规则保留在/project/origin/develop内的.htaccess中,而不是站点根.htaccess中。

您可以使用在两个地方都可以使用的通用规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/(.*/)?foo/(.*)$ [NC]
RewriteRule ^ /%1bar/%2 [R=301,L,NE]