需要重写参数并使用htaccess重定向

时间:2015-06-01 16:05:50

标签: .htaccess mod-rewrite

我需要用htaccess同时做两件事。

我需要使用以下网址:

 http://client.example.com/123

并将目录重写为param,同时将另一个子域添加到url中,使其如下所示:

 http://client.qa.example.com/?param=123

这会使param位正确,但我无法弄清楚如何添加subdir:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/[^/]+/?$
RewriteRule ^([^/]*)/?$ /?param=$1 [L]

4 个答案:

答案 0 :(得分:1)

您可以使用RewriteCond检查主机标头,并提取名称的相关部分。在重写中使用它们。 RewriteCond中对匹配的回溯引用显示为%n

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} (.+?)\.(.*)
RewriteRule ^([^/]*)/?$ http://%1.qa.%2/?param=$1 [R,L]

(.+?)\.(.*)将对第一个.的所有内容进行匹配,然后对所有内容进行匹配。因此clientexample.com将分别位于%1%2

答案 1 :(得分:1)

如果您的.htaccess位于var imageViewModel = function(item){ var self = this; self.Rename = function(filePath){ self.src(filePath); $parent.NotifyUser(); }; }; 的根目录中,则应该是一个简单的重定向。当然,目录必须是目录,否则不会重定向。

$parent.NotifyUser();

答案 2 :(得分:0)

您可以使用以下内容进行匹配(检查htaccess语法):

(http://[^.]+\.)([^/]+/)([^/]*)/?$

并替换为:

$1qa.$2?param=$3

请参阅DEMO

答案 3 :(得分:0)

最后让它使用:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} (.+?)\.(.*)
RewriteRule ^([^/]*)/?$ http://%1.qa.%2/?param=$1 [R,L]

现在我只需要弄清楚如何使用2个参数,因为参数2并不总是存在。