如何编写htaccess 301重定向规则从php重定向到html

时间:2014-05-21 07:58:28

标签: php apache .htaccess mod-rewrite redirect

我有一个问题(它可能很简单,但我从未需要编写正则表达式)

一位搜索引擎优化专家告诉我制作漂亮的网址,以便我使用CMS提供的.htaccess文件。 但现在他要求我将旧网址重定向到新网址。

这不起作用

RewriteRule ^index.php?page=kontakt$ /kontakt.html  [R=301,L]

还有这个(它应该从index.php文件重定向到主页面)

RewriteRule ^index.php$ /   [R=301,L]

导致sitename.com/?page=kontakt,所以现在我还必须重定向此。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

RewriteRule仅匹配没有查询字符串的基本URL。你需要一个额外的RewriteCond才能工作。

RewriteCond %{QUERY_STRING} ^page=kontakt$
RewriteRule ^index.php$ /kontakt.html [R=301,L]

修改 显然,在这种情况下会保留查询字符串,因此您可能会收到/kontakt.html?page=kontakt

要放弃原始查询字符串,您需要在网址后添加?

RewriteRule ^index.php$ /kontakt.html? [R=301,L]