Mod rewrite mod_rewrite-从一个域重定向到另一个域,并在url中保留尾随值

Mod rewrite mod_rewrite-从一个域重定向到另一个域,并在url中保留尾随值,mod-rewrite,Mod Rewrite,我认为这是mod_rewrite中一个非常直截了当的问题: 我得到了一个域,它需要重定向到另一个域,但在第一个URL中的最后一个斜杠(/)之后保留任何值,然后转移到第二个URL domain.com/4433应传输到domain.com/folder/?p=4333 为了清楚起见,列出了: 发件人:domain.com/4433 收件人:domain.com/folder/?p=4333 有什么想法吗 编辑: 通过一些测试,我们发现了以下解决方案: RewriteCond%{HTTP_HOST}

我认为这是mod_rewrite中一个非常直截了当的问题:

我得到了一个域,它需要重定向到另一个域,但在第一个URL中的最后一个斜杠(/)之后保留任何值,然后转移到第二个URL

domain.com/4433应传输到domain.com/folder/?p=4333

为了清楚起见,列出了:

发件人:domain.com/4433

收件人:domain.com/folder/?p=4333

有什么想法吗

编辑: 通过一些测试,我们发现了以下解决方案:

RewriteCond%{HTTP_HOST}^domain.com$

重写规则^([0-9a-z]*)$/文件夹/?p=$1[NC]

真诚地,
-巴克伦

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

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

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

RewriteEngine On

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

RewriteCond %{HTTP_HOST} ^domain1.com$
RewriteRule ^([0-9])+$ http://domain2.com/folder/?p=$1 [R=301,L]
否则,正如Benedikt Eger所说,如果您想要真正的重定向,则使用R=301。 或者,如果希望仅对数字进行重定向,请执行以下操作:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain1.com$
RewriteRule ^4433$ http://domain2.com/folder/?p=4433 [R=301,L]
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)+至少包含一个数字重定向到指定的URL。[五十] 使这成为应用的最后一条规则。

如果您真的不想重定向,但想要有漂亮的URL,您可以使用

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

这将获取第一个斜杠后的所有内容,并将其插入到$1处,但前提是斜杠后有内容。它不会发出重定向,因此用户不会注意到。

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

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

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

如果两个域使用相同的vhost运行,则这将产生无休止的重定向循环。@Residuum:不仅仅是在这种情况下。替代只是一条相对路径。所以
/4433
会被重定向到
/domain.com/folder?p=4433
会被重定向到
/domain.com/domain.com/folder?p=domain.com/folder
会被重定向到
/domain.com/domain.com/folder?p=domain.com/domain.com/folder
等。谢谢大家对我粗心的回答发表评论。我试图进行一次(也许是另一次粗心的)修复。我想真正的解决方案将取决于整个域的有效URL集的外观。也许我忘了提及它,但只有对域/4433的访问才应该重定向到domain.com/folder/?p=4333“domain.com”单独不应该重定向。你搞错了什么<代码>[(0-9)+]应该是
([0-9])+
。谢谢,秋葵。我已经修复了这个输入错误/thinko。你想让HTTP重定向,还是让服务器在后台不让用户注意到就这样做?应该在用户不注意的情况下完成。但我们找到了解决方案,它是:RewriteCond%{HTTP_HOST}^domain.com$RewriteRule^([0-9a-z]*)$/folder/?p=$1[NC]