mod_rewrite - 从一个域重定向到另一个域并保留url中的尾随值

时间:2009-08-17 10:27:40

标签: mod-rewrite

我认为这是mod_rewrite中非常直接的问题:

我有一个域,需要重定向到另一个域,但在第一个URL中的最后一个斜杠(/)之后保留任何值,直到第二个。

domain.com/4433应转移到domain.com/folder/?p=4333

为清晰起见而列出:

来自:domain.com/4433

To:domain.com/folder/?p=4333

有什么想法吗?

编辑: 经过一些测试,我们找到了以下解决方案:

  

RewriteCond%{HTTP_HOST} ^ domain.com $

     

RewriteRule ^([0-9a-z] *)$ / folder /?p = $ 1 [NC]

此致 - bakkelun

4 个答案:

答案 0 :(得分:0)

RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)$ domain.com/folder?p=$1 [R=301,L]

答案 1 :(得分:0)

以防万一:domain.com = domain1.com和domain2.com? domain1.com应该重定向到domain2.com?两者都在同一台服务器上运行(可选)?

<强> [编辑:]

如果您真的只想做评论中所述的事情,请执行以下操作:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain1.com$
RewriteRule ^4433$ http://domain2.com/folder/?p=4433 [R=301,L]

另外,正如Benedikt Eger所说,如果你想要真正的重定向,R = 301。 或者,如果您希望仅重定向数字,请执行以下操作:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain1.com$
RewriteRule ^([0-9])+$ http://domain2.com/folder/?p=$1 [R=301,L]

RewriteCond检查,如果定义vhost是domain1.com但不是domain2.com,则应用重写规则,并通过HTTP状态301 [R = 301]重定向仅数字字符串(0-9)+由at组成指定URL中至少有一个数字。 [L]使这成为最后应用的规则。

答案 2 :(得分:0)

如果您不想真正重定向但拥有漂亮的网址,可以使用

RewriteEngine On
RewriteRule ^/(.+)$ /folder?p=$1 [L]

这会在第一个斜杠之后获取所有内容并将其插入$ 1 - 但只有在斜杠之后才会出现这种情况。它不会发出重定向,因此用户不会注意到。

答案 3 :(得分:0)

如果没有任何进一步的信息,请尝试以下方法:

RewriteEngine on
RewriteRule ^/([^/]+)$ /folder/?p=$1

如果要在.htaccess文件中使用该规则,请删除前导斜杠。