2015-11-02 30 views
0

您好我想创建一个规则,以消除该URL的第一个目录动态目标,看到的例子:htaccess的使用正则表达式

请求URL:http://www.example.com/San-Salvador/help

我想重定向到

目标URL:http://www.example.com/help

模式为[基本URL] [城市名称] [目录],我想重新创建它,因为这是[base URL] [目录名]

+0

你能告诉我们一些示例代码,你期望的正则表达式运行? –

+0

以及正则表达式不是主要问题,主要问题是使用htaccess编写规则 –

+0

当您在浏览器中输入“http:// www.example.com/help”时会发生什么? – anubhava

回答

0

这里是一个应该工作的一般的正则表达式:

^(http:\/\/www\.example\.com\/)(.*\/)(.*) 

每个术语在括号中是一组这将可能匹配的输入串。对于输入字符串:

http://www.example.com/San-Salvador/help 

这里的匹配组:

http://www.example.com/ 
San-Salvador/ 
help 

保留是第一个和第三个,即团体http://www.example.com/help给你http://www.example.com/help

你可以探索这个正则表达式here at Regex 101

+0

谢谢,现在我只需要弄清楚如何将变量放在htaccess上使用 –

+0

@Jose如果你可以给我一些上下文,我会尝试给你你可以在WordPress中使用的代码。 –

+0

以及我从一个自定义cms移动到wordpress,我不想松散所有的搜索引擎优化,因为我改变了网站的结构,旧的网站写在asp.net mvc上,他们做了代码中的网址处理。我试图在wordpress上复制它。在asp.net项目中,他们解析url并将其重定向到一个新的url,而不改变浏览器中的url显示。我希望这是有道理的 –

0

大多数情况下,您可以使用这条规则来移除城市。但是,您的代码需要处理重定向的URL请求后发生的情况。意思是什么时这个被称为http://www.example.com/help

RewriteEngine on 
RewriteRule ^(?:[^/]+)/([^/]+)/?$ /$1 [L] 
+0

感谢这个解决方案的确能工作,但它改变了浏览器中的网址,有没有办法在地址栏上写这个http://www.example.com/San-Salvador/help,重定向在这里http://www.example.com/help,但不要更改地址栏上的地址 –

+0

@JoseManuelOjeda你应该能够删除301重定向和完整的URL。查看我的更新。 –

+0

这是如何解决你的? –