简体   繁体   中英

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

I have a problem (it's probably a simple one but I've never had the need to write regex)

A SEO specialist told me to make pretty URLs so I did with the .htaccess file the CMS provides. But now he requires me to redirect the old URLs to new ones.

This doesn't work

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

and also this (wich was supposed to redirect to the main page from the index.php file)

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

has resulted in sitename.com/?page=kontakt , so now I also have to redirect this.

How do I fix this?

RewriteRule only matches the base URL without the query string. You need an additional RewriteCond for it to work.

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

EDIT: Apparently query string gets preserved in this case, so you're probably getting /kontakt.html?page=kontakt

To discard original query string you need to put ? after URL.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM