我想重写http://example.com/?paginate=2
为http://example.com/page/2
。
因此我使用以下规则来执行此操作,但是它不起作用。
RewriteRule ^page/(.*)/([0-9]+) ?paginate=$1 [L]
任何建议都很好,非常感谢!
答案1
RewriteRule ^page/(.*)/([0-9]+) ?paginate=$1 [L]
这RewriteRule
图案与您的请求 URL ( ) 不匹配/page/2
。您的路径段过多(它将匹配格式为 的 URL /page/something/2
)。相反,您需要类似以下规则:
RewriteRule ^page/([0-9]+)$ ?paginate=$1 [L]
更新:但是,由于这是内部重写,您可能应该直接重写到处理请求的文件(可能index.php
是DirectoryIndex
),而不是让 mod_dir 执行此操作。 本身?paginate=<number>
并不严格有效,因此 mod_dir 向 发出内部子请求index.php?paginate=<number>
。 理想情况下,您应该明确并在 中包含完整的 URL 路径RewriteRule
代换以避免这种额外的依赖。例如:
RewriteRule ^page/([0-9]+)$ index.php?paginate=$1 [L]