漂亮 URL 更改变量分隔符

Pretty URL change variable seporator

我正在尝试通过漂亮的 url 传递变量,我可以使用以下方法实现:

domain.com/exercises/lunge+with+dumbells

这在我的 .htaccess 文件中:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9+]+)$ index.php?exercise=
RewriteRule ^([a-zA-Z0-9+]+)/$ index.php?exercise=

在 php 中使用以下方式访问:

$urlVars = $_GET["exercise"];

但是,我需要我的 URLs 像这样阅读:

domain.com/exercises/lunge-with-dumbells

我可以使用

让它工作

exercises/?exercise=lunge-with-dumbells 和这个 PHP 函数:

$urlVars = $_GET["exercise"];
$newString = str_replace("-", " ", $urlVars);

但是,我想要一个漂亮的 URL,变量字符串由 - 分隔,而不是 +

非常感谢。

要让您的 .htaccess 匹配使用“-”分隔符而不是“+”分隔符美化的 url,您只需更改管理将规则重写到您的 php 文件:

更改规则自:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9+]+)$ index.php?exercise=
RewriteRule ^([a-zA-Z0-9+]+)/$ index.php?exercise=

至:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-]+)$ index.php?exercise=
RewriteRule ^([a-zA-Z0-9-]+)/$ index.php?exercise=

为了将正则表达式拆分为最简单的部分,我们将创建一个表示

   ^ // match the beginning of a strings that start with
   ( 
   [ // a pattern consisting of
    a-z //a lowercase alphabet letter
    A-Z //a uppercase alphabet letter
    0-9 //a digit
    - //and the minus sign (here we changed from the + sign to the new value)
    ]
    + //one or more occurence of the combination described above
    )

关于正则表达式和.htaccess的更多细节请参考:https://httpd.apache.org/docs/current/rewrite/intro.html