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


How to write an htaccess 301 Redirection rule to redirect from php to html

我有一个问题(这可能是一个简单的,但我从来没有需要写正则表达式)

一位SEO专家告诉我要制作漂亮的url,所以我使用了CMS提供的.htaccess文件。但是现在他要求我把旧的url重定向到新的。

这行不通

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

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

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

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

如何解决这个问题?

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

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

显然,在这种情况下保留了查询字符串,所以您可能会得到/kontakt.html?页面= kontakt

要丢弃原始查询字符串,需要在URL后面加上?

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