.htaccess mod_rewrite参数到非现有的子目录

时间:2014-06-29 08:43:03

标签: .htaccess mod-rewrite subdirs

我想扩展现有的重写规则,将特殊的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”

有人可以帮帮我吗?

谢谢你,并致以最诚挚的问候。

1 个答案:

答案 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