2016-12-21 49 views
1

我試圖通過一個漂亮的url的變量,我可以achive使用下列內容:漂亮的URL變化而變化seporator

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); 

不過,我想就像一個漂亮的URL,其變量字符串由-分隔,而不是+

非常感謝。

回答

2

爲了讓您的.htaccess匹配了「-」分隔符,而不是「+」分隔符,你只需要改變管理重寫規則,以你的PHP文件中的正則表達式的美化網址:

更改從規則:

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

到:

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 
    ) 

有關正則表達式和的.htaccess請參考更多詳細信息:https://httpd.apache.org/docs/current/rewrite/intro.html