我完全失去了尝试在现有页面中集成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生成器,如this和this,但这些生成的规则只导致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]
似乎要做的伎俩。这当然是每个网址的手册,但我只有一些。
答案 0 :(得分:0)
RewriteEngine On
RewriteBase /
RewriteRule ^(.+)/([^/]+)/?$ index.php?page=$1&hl=$2
RewriteRule ^([^/]+)/?$ index.php?page=$1 [QSA]