将此添加到您的网络根/ 目录中的.htaccess
RewriteEngine on
RewriteBase /
RewriteRule ^home$ index.php?page=home&%{QUERY_STRING} [NC,L]
如果您希望它适用于所有页面,即 /any-page 被用作 index.php?page=any-page 然后使用
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d # not a dir
RewriteCond %{REQUEST_FILENAME} !-f # not a file
RewriteRule ^(.*)$ index.php?page=$1&%{QUERY_STRING} [NC,L]
这些规则如何运作?
RewriteRule 具有以下语法
RewriteRule [Pattern] [Substitution] [Flags]
模式 可以使用正则表达式,并与主机名和端口之后的 URL 部分匹配(.htaccess 放置在根目录中),但在任何查询字符串之前。
第一条规则
^home$ 模式使第一条规则匹配传入的 URL www.website.com/home。 %{QUERY_STRING} 只是捕获 /home? 之后的任何内容并将其附加到内部替换的 URL index.php?page=home。
标志NC 只是使规则不区分大小写,因此它也匹配/Home 或/HOME。而L 只是将其标记为最后一个,即重写应该在此处停止,以防下面定义了任何其他规则。
第二条规则
这个更通用,即如果您的所有网站页面都遵循这个 URL 模式,那么我们可以使用这个通用的,而不是为每个页面编写几条规则。
^(.*)$ 模式中的.* 与/any-page-name 匹配,括号有助于将any-page-name 部分捕获为$1 变量,在替换URL 中使用为index.php?page=$1。 page=home& 和 page=$1& 中的 & 只是多个查询字符串字段-值对之间使用的分隔符。
最后,%{QUERY_STRING} 和 [NC,L] 标志的工作方式与规则一中的相同。