如何通过 PHP .htaccess 将动态 URL 重写为短 URL?

如何通过 PHP .htaccess 将动态 URL 重写为短 URL?

我想重写http://example.com/?paginate=2http://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.phpDirectoryIndex),而不是让 mod_dir 执行此操作。 本身?paginate=<number>并不严格有效,因此 mod_dir 向 发出内部子请求index.php?paginate=<number>。 理想情况下,您应该明确并在 中包含完整的 URL 路径RewriteRule 代换以避免这种额外的依赖。例如:

RewriteRule ^page/([0-9]+)$ index.php?paginate=$1 [L]

相关内容