用mod_rewrite重写和重定向

时间:2014-03-30 14:43:11

标签: .htaccess

我只是想重写并自动重定向:

来自mysite.com/sub/index.php?channel=rai1

mysite.com/sub/channel-rai1.html

我试过这个:

RewriteRule ^sub/channel-([^/]*)\.html$ /sub/index.php?channel=$1 [L]

但问题是重定向不会发生。为什么呢?

1 个答案:

答案 0 :(得分:0)

将重写规则更改为:

RewriteRule ^sub/channel-([^/]*)\.html$ /sub/index.php?channel=$1 [R=301]

会奏效。您正在编写规则,但您并没有告诉它在浏览器中更改它。

[L]告诉它停止应用后面的任何规则。 [R=301]将实际重定向url到新的url并告诉浏览器/搜索引擎新url是永久使用的url。您可以使用[R=301, L]将两者合并。

编辑: 我读错了这个问题,道歉

RewriteEngine On
RewriteCond %{THE_REQUEST} ^(GET|POST)\ /sub/index\.php\?channel=(.*)&data=(.*)\ HTTP
RewriteRule ^sub/index.php /sub/channel-%2-%3.html? [R,L]


#Internal rewrite
RewriteRule ^sub/channel-([^/]*)-(.*)\.html$ /sub/index.php?channel=$1&data=$2 [L]

以上内容应将http://example.com/sub/index.php?channel=NBC&data=2012/02/12更改为http://example.com/sub/channel-NBC-2012/02/12.html