2016-02-01 90 views
0

我如何轉換的網址如下:乾淨網址爲分組使用的.htaccess&PHP

http://localhost/series/dynamics/admin/cleanURL/value1?subgroup=value2

一個更清潔的URL,

爲如:http://localhost/series/dynamics/admin/cleanURL/value1/value2

我使用$ _GET並且可以選擇使用$ _SERVER ['REQUEST_URI']。 php文件的名稱是index.php。我設法實現了第一個參數,即值1,但無能爲力,如何做到這一點乾淨url

我的htaccess看起來像這樣,很確定它需要傳遞第二個參數,但不能解決問題。

Rewriteengine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
Rewriterule ^([a-zA-Z]+)$ index.php?group=$1 

我曾嘗試:^([a-zA-Z]+)$ index.php?group=$1?subgroup=$2和其他一些方法,但他們都不工作

請看看下面2個PHP代碼,我不知道,如果「&放大器」將做的工作是除了「?」之外的任何東西帶我到另一個頁面。

<li id="nav"<?php if($pageid==$nav['group']){echo'class="active"';}?>><a href="<?php echo $nav['group'];?>"><?php echo $nav['product']?></a></li> 


<a href="?subgroup=<?php echo $list['subgroup']; ?>" <?php if($tst1 == $list['subgroup']){echo 'class="active"';} ?> ><?php echo $list['subgroup']."(".$list['contains'].")".'<br/>';?></a> 

我可以使用「&」而不是「?」嗎?在子組的鏈接?

+0

你把這個.htaccess文件放在哪裏? – jsa

+0

你的規則只是匹配一切,並將它作爲另一個查詢參數添加。如果你想剝離「subgroup = value2」,那麼你應該明確地搜索。 –

+0

@MarcB問題是,他們都是相互關聯的,因此... –

回答

0

我看到你有幾個問題。無論何時您需要添加另一個參數,您需要在RewriteRule pattern中添加另一個capture group([a-zA-Z]+),否則它將不知道在URI中查找。因此,在模式中使用反向引用$2而沒有其他捕獲組將爲空,因爲您只有一個捕獲組。

此外您的查詢字符串格式無效。您只在開始處使用?一次,然後使用&符號(&)添加更多鍵/值對。

像這樣的事情可能是你在追求什麼。我改變了一點,以防止多次寫入條件。

RewriteEngine on 

#if file or directory is real, do nothing 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 

#rewrite group and subgroup e.g. http://.../value1/value2/ 
Rewriterule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php?group=$1&subgroup=$2 [L] 
#rewrite group e.g. http://.../value1/ 
Rewriterule ^([a-zA-Z]+)/?$ index.php?group=$1 [L] 
+0

請看看上面的2個PHP代碼,我不確定是否會做除了以外的任何工作?帶我到另一個頁面。當我有爲子組定義的這些值時,我該如何處理空白空間和「 - 」。 –