我认为这是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
答案 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文件中使用该规则,请删除前导斜杠。