Apache htaccess将301所有用户从带破折号的旧文件夹重定向到同一域的新文件夹

Apache htaccess将301所有用户从带破折号的旧文件夹重定向到同一域的新文件夹,apache,.htaccess,Apache,.htaccess,我想移动键入或单击谷歌结果的用户 http://example.com/name-lname/chicago 到 我试过了 Redirect 301 ^name-lname namelname 但我得到了错误500 如何修复它?试试以下方法: RewriteRule ^name-lname$ /namelname? [L,R=301] 试试这个: RewriteRule ^name-lname$ /namelname? [L,R=301] 您可以将此规则用作root.htaccess中的

我想移动键入或单击谷歌结果的用户

http://example.com/name-lname/chicago

我试过了

Redirect 301 ^name-lname namelname
但我得到了错误500 如何修复它?

试试以下方法:

RewriteRule ^name-lname$ /namelname? [L,R=301]
试试这个:

RewriteRule ^name-lname$ /namelname? [L,R=301]

您可以将此规则用作root.htaccess中的第一条规则:

RedirectMatch 301 ^/name-lname(/.*)?$ /namelname$1

RedirectMatch
提供了针对
Redirect
指令的正则表达式功能。

您可以将此规则用作根目录中的第一条规则。htaccess:

RedirectMatch 301 ^/name-lname(/.*)?$ /namelname$1

RedirectMatch
提供了针对
Redirect
指令的正则表达式功能。

您需要使用RedirectMatch,因为Redirect不支持正则表达式:

RedirectMatch 301 ^/([^-]+)-([^/]+)/(.+)$ /$1$2/$3 

您需要使用RedirectMatch,因为Redirect不支持正则表达式:

RedirectMatch 301 ^/([^-]+)-([^/]+)/(.+)$ /$1$2/$3 

对于这种简单重定向,您不需要正则表达式,因此不需要mod_rewrite或RedirectMatch,简单重定向就足够了:

Redirect 301 /name-lname /namelname
查询字符串和附加路径部分将添加到目标URL。从:

然后,以URL路径(注意:name/lname部分)开头的任何请求都将返回重定向 在目标URL的位置向客户端发出请求。附加的 匹配URL路径之外的路径信息将附加到 目标URL


但是请注意
http://example.com/name-lnamefile.html
将不匹配。

对于这种简单重定向,您不需要正则表达式,因此不需要mod_rewrite或RedirectMatch,简单重定向就足够了:

Redirect 301 /name-lname /namelname
查询字符串和附加路径部分将添加到目标URL。从:

然后,以URL路径(注意:name/lname部分)开头的任何请求都将返回重定向 在目标URL的位置向客户端发出请求。附加的 匹配URL路径之外的路径信息将附加到 目标URL

但是请注意
http://example.com/name-lnamefile.html
将不匹配