简体   繁体   中英

Htaccess pagination and multiple query strings

I'm trying to setup a redirect in order to showcase a business page, with the listings on that page, paginated.

This is how I want the URL to look like:

https://www.propertypost.lk/company/colomborent/1

Where the last number in the URL, is the page number.

I've been able to get this to work: https://www.propertypost.lk/company/colomborent

But I can't seem to figure out how to include the pagination part (which shouldn't be mandatory).

This is how the URL looks without htaccess:

https://www.propertypost.lk/agent-business-page.php?url=colomborent&page=1

And here is my htaccess rewrite rule that works:

RewriteRule     ^company/([^\s]+[\w])/?$    agent-business-page.php?url=$1

And this is what I tried which does not work...:

RewriteRule     ^company/([^\s]+[\w])/([^\s]+[\w])/?$   agent-business-page.php?url=$1&page=$2

Thanks for all the help!

You want \\d instead of \\w to capture the numerical pagination number argument. So something like:

RewriteEngine on
RewriteRule ^/?company/(\w+)/?$ /agent-business-page.php?url=$1 [END]
RewriteRule ^/?company/(\w+)/(\d+)/?$ /agent-business-page.php?url=$1&page=$2 [END]

In case you receive an internal server error (http status 500) using the rule above then chances are that you operate a very old version of the apache http server. You will see a definite hint to an unsupported [END] flag in your http servers error log file in that case. You can either try to upgrade or use the older [L] flag, it probably will work the same in this situation, though that depends a bit on your setup.

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