Regex 如何使用GET参数为URL创建重写规则?
我正在尝试重写这种类型的URL: 到 这也应该是递归的,这意味着: 应改写为: 到目前为止,我的.htaccess中有这个(用arkasha的修改):Regex 如何使用GET参数为URL创建重写规则?,regex,.htaccess,mod-rewrite,url-rewriting,Regex,.htaccess,Mod Rewrite,Url Rewriting,我正在尝试重写这种类型的URL: 到 这也应该是递归的,这意味着: 应改写为: 到目前为止,我的.htaccess中有这个(用arkasha的修改): 重新启动发动机 重写基/ 重写规则^index\.php$-[L] 重写cond%{REQUEST_FILENAME}-F 重写cond%{REQUEST_FILENAME}-D 重写规则/index.php[L] #重写语言参数 重写cond%{QUERY_STRING}(^ |&)lang=(\w+) 重写规则/?(\w+/?$%1
重新启动发动机
重写基/
重写规则^index\.php$-[L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则/index.php[L]
#重写语言参数
重写cond%{QUERY_STRING}(^ |&)lang=(\w+)
重写规则/?(\w+/?$%1-$1[结束]
但这似乎不起作用。您需要使用重写条件从查询字符串中捕获令牌,然后可以在重写规则中使用它:
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)lang=(\w+)
RewriteRule /?(\w+)/?$ %1-$1 [END]
该规则集应该在http服务器主机配置中或在动态配置文件(“.htaccess”样式文件)中同样工作,但是您应该优先选择第一个选项。显然,重写模块需要加载到http服务器中,并在http主机内启用。如果您决定使用一个动态配置文件,您还需要确保它的解释完全启用,并且它位于正确的位置
RewriteRule^([^/]+)$http://www.example.com/%1-$1? [NC,L,R]
应该将/news/?lang=en
重定向到/en news
。为什么要在每个目录组件之前添加en-
?@anubhava这是一个多语言网站,这就是url中定义语言的方式。好的,我理解多语言部分,但url可以是http://www.example.com/en/news/hello/world/
而不是http://www.example.com/en-news/en-hello/en-world/
我只能在.htaccess中执行此操作,我还应该指定这是一个Wordpress站点。我包括了代码(见我更新的帖子),但它似乎没有任何作用。多个规则是自上而下处理的。您可能需要在第一个规则之后将规则向上移动。
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)lang=(\w+)
RewriteRule /?(\w+)/?$ %1-$1 [END]