mod_rewrite:隐藏 PHP 扩展并将查询字符串显示为目录


mod_rewrite: Hiding PHP extension and showing querystrings as directories

我有扩展名为.php的文件,我想隐藏它们,并将查询字符串显示为重写的PHP扩展的内部目录。

换句话说,我想https://domain.com/page.php

使用 https://domain.com/page/(使用结尾斜杠)和

访问

https://domain.com/page/?id=1

https://domain.com/page/1/(也带有结尾斜杠)

我还想访问带有.php扩展名的页面,返回未找到 404。

如何在.htacess文件中执行此操作?

HTACCESS需要看起来像这样:

RewriteEngine On
RewriteRule ^([A-z0-9]+)/$ $1.php
RewriteRule ^([A-z0-9]+)/([1-0]+)/$ $1.php?page=$2

对于自定义 404 错误,您将使用:

ErrorDocument 404 /404/

但是,您需要确保将第一个重写规则应用于 404 页面。您将需要一个404.php文件。

你可以

试试这个mod_rewrite规则生成器。如果你想自己编写规则,这相当简单:它使用与 PHP preg_* 函数相同的正则表达式:)

在您的特定实例中,请使用RewriteRule ^([A-z0-9]+)/([1-0]+)/$ $1.php?page=$2