我想扩展现有的重写规则,将特殊的url参数重写为非现有的子目录。
类似的东西:
真正的网址是:
host.com/post.php?id=17&lang=pl
我现有的重写:
host.com/somedescriptionstring-p-17.html?lang=pl
这是由这个重写者实现的:
RewriteRule ^(.*)-p-(.*).html$ post.php?id=$2&%{QUERY_STRING}
现在,我想将重写扩展为:
host.com/pl/somedescriptionstring-p-17.html
这个,我想用两个特殊的语言参数:“pl”和“ru” - 默认参数必须是“pl”
有人可以帮帮我吗?
谢谢你,并致以最诚挚的问候。
答案 0 :(得分:0)
我假设你有两种类型的网址。其中一个是http://example.com/lang/post1234.html形式,一个是http://example.com/post1234.html形式。第二个没有语言,你想默认为波兰语。你需要两个规则。第一个将在内部用语言代码重写一个真正的URL。另一个将发出外部重定向添加" pl"到网址。
#This translates the fancy url internally
RewriteRule ^(pl|ru)/.*-p-([0-9]+)\.html$ /post.php?lang=$1&id=$2 [L]
#When there is a language parameter
RewriteCond %{QUERY_STRING} lang=(pl|ru)
RewriteRule ^(.*)-p-([0-9]+)\.html$ /%1/$1-p-$2.html [R,L]
#default case
RewriteRule ^(.*)-p-([0-9]+)\.html$ /pl/$1-p-$2.html [R,L]
在测试正常后,将R
更改为R=301
。