如何使用参数重定向网址?

时间:2011-06-14 14:14:52

标签: mod-rewrite redirect parameters mod-alias

我完全失去了尝试在现有页面中集成mod_rewrite。目前,我正在从头开始构建一个新站点,并且我有一些很好的干净网址,例如:

http://www.example.nl/nl/example

运行Cms的旧网站变得简单,有一些未经重写的网址需要重定向到新网页。那些网址看起来像这样:

http://www.example.nl/index.php?page=cake-and-pie&hl=nl_NL

但更短的版本如:

http://www.example.nl/index.php?page=cake-and-pie

也有效。

我花了一段时间才发现带参数的url不能简单地用“Redirect 301”重定向,就像我正常做的那样。所以我尝试了一些在线mod_rewrite生成器,如thisthis,但这些生成的规则只导致404错误,(重定向根本不起作用)。

我的.htaccess文件当前是这样的:

RewriteEngine On
RewriteBase /

# remove .php;
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# remove index
RewriteRule (.*)/index$ $1/ [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

旧页面会抓住存在。 如何将旧页面重定向到新页面?

感谢。

修改

RewriteCond %{QUERY_STRING} =page=pie
RewriteRule ^index\.php$ /nl/? [L,R=301]
RewriteCond %{QUERY_STRING} =page=pie&hl=nl_NL
RewriteRule ^index\.php$ /nl/? [L,R=301]
似乎要做的伎俩。这当然是每个网址的手册,但我只有一些。

1 个答案:

答案 0 :(得分:0)

RewriteEngine On
RewriteBase /
RewriteRule ^(.+)/([^/]+)/?$    index.php?page=$1&hl=$2
RewriteRule ^([^/]+)/?$         index.php?page=$1 [QSA]