简体   繁体   中英

using .htaccess how can I redirect query strings from only the root to a specific url?

I am trying to redirect all query strings off the root to a specific page on my site. The problem I'm having is making sure that query strings on other pages and directories still work as normal (for example domain.com/page/query=2 should not redirect).

This is what I've got:

RewriteEngine On
RewriteCond %{QUERY_STRING} .
RewriteRule (.*) /page-not-found/ [R=301,L,QSD]

Any help is appreciated - thanks!

An unexpected requirement, but OK, this probably is what you are looking for:

RewriteEngine On
RewriteCond %{QUERY_STRING} .
RewriteRule ^/?$ /page-not-found/ [R=301,QSD]

This rule will work likewise in the http servers host configuration or inside a dynamic configuration file (".htaccess" file). Obviously the rewriting module needs to be loaded inside the http server and enabled in the http host. In case you use a dynamic configuration file you need to take care that it's interpretation is enabled at all in the host configuration and that it is located in the host's DOCUMENT_ROOT folder.

And a general remark: you should always prefer to place such rules in the http servers host configuration instead of using dynamic configuration files (".htaccess"). Those dynamic configuration files add complexity, are often a cause of unexpected behavior, hard to debug and they really slow down the http server. They are only provided as a last option for situations where you do not have access to the real http servers host configuration (read: really cheap service providers) or for applications insisting on writing their own rules (which is an obvious security nightmare).

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