我试图通过一个漂亮的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);
但是,我想要一个漂亮的网址,其变量字符串由-
而非+
非常感谢。
答案 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