Htaccess 分页和多个查询字符串

Htaccess pagination and multiple query strings

我正在尝试设置重定向以展示业务页面,该页面上的列表已分页。

这就是我希望 URL 的样子:

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

其中 URL 中的最后一个数字是页码。

我已经能够让它工作:https://www.propertypost.lk/company/colomborent

但我似乎无法弄清楚如何包含分页部分(这不应该是强制性的)。

这是 URL 在没有 htaccess 的情况下的样子:

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

这是我有效的 htaccess 重写规则:

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

这是我试过的方法,但没有用...:[=​​15=]

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

感谢大家的帮助!

您希望用 \d 而不是 \w 来捕获数字页码参数。所以像:

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

如果您使用上述规则收到内部服务器错误(http 状态 500),那么您可能操作的是非常旧版本的 apache http 服务器。在这种情况下,您将在您的 http 服务器错误日志文件中看到对不受支持的 [END] 标志的明确提示。您可以尝试升级或使用旧的 [L] 标志,在这种情况下它可能会工作相同,尽管这在一定程度上取决于您的设置。

此规则同样适用于 http 服务器主机配置或动态配置文件(“.htaccess”文件)。显然重写模块需要在http服务器内部加载并在http主机中启用。如果您使用动态配置文件,您需要注意它的解释在主机配置中完全启用,并且它位于主机的 DOCUMENT_ROOT 文件夹中。

一般性评论:您应该始终倾向于将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件 (".htaccess")。那些动态配置文件增加了复杂性,通常是意外行为的原因,难以调试并且它们确实减慢了 http 服务器的速度。它们仅在您无法访问真正的 http 服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则(这是一个明显的安全噩梦)的应用程序的情况下作为最后的选择提供。