漂亮的URL更改变量seporator

时间:2016-12-21 09:20:34

标签: php .htaccess friendly-url

我试图通过一个漂亮的URL来传递变量,我可以使用以下内容来实现:

domain.com/exercises/lunge+with+dumbells

这在我的.htaccess文件中:

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

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

$urlVars = $_GET["exercise"];

但是,我需要将我的网址读取为:

domain.com/exercises/lunge-with-dumbells

我可以使用

让这个工作

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

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

但是,我想要一个漂亮的网址,其变量字符串由-而非+

分隔

非常感谢。

1 个答案:

答案 0 :(得分:2)

要让你的.htaccess匹配一个用“+”分隔符而不是“RewriteEngine On RewriteRule ^([a-zA-Z0-9+]+)$ index.php?exercise=$1 RewriteRule ^([a-zA-Z0-9+]+)/$ index.php?exercise=$1 ”分隔符进行美化的网址,你只需要将管理重写规则的正则表达式更改为你的php文件:

更改规则:

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

为:

   ^ // 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
    )

将正则表达式拆分为最简单的组件,我们将创建一个说

的组件
exec-maven-plugin

有关正则表达式和.htaccess的更多详细信息,请参阅:https://httpd.apache.org/docs/current/rewrite/intro.html