2017-07-13 91 views
0

首先:如果你對這個問題有更好的標題,請告訴我。 你好,我有一個網站,使用變量加載內容。 讓我給你解釋一下。htaccess根據網址獲取一個或兩個參數PHP

我的指數php文件:

<?php 

    #check if get parameter page exists 
    #check if file exists 
    require $_GET['page] . '.php'; //if it exists require its content  

?> 

這樣一來用戶可以去我的網站,並寫出像下面這些的網址:

http://localhost/loremipsum?page=home 

http://localhost/loremipsum?page=help 

但是爲了得到一個更清潔的URL我編輯了我。 htaccess文件的URL得到像這樣的:

http://localhost/loremipsum/home 

http://localhost/loremipsum/help 

的的.htaccess: RewriteEngine敘述在 RewriteBase/ 的RewriteCond%{} REQUEST_FILENAME!-f 的RewriteCond%{} REQUEST_FILENAME!-d 重寫規則^(。*)/ loremipsum /?PG = $ 1 [L]

但我得一個地步,我需要其他的參數,在接下來的網址我想有userpreferencespage參數和something作爲fav參數

像這樣的URL將工作:

http://localhost/loremipsum/userpreferences&fav=something 

但目標是要得到這樣一個網址:

http://localhost/loremipsum/userpreferences/something 

的問題是什麼,我都試過工作過,這是我認爲它應該工作,但事實並非如此:

RewriteRule ^(.*)/userpreferences/(a-zA-Z0-9)+ /loremipsum/?pg=$1&fav=$2 [L] 

UPDATE:

我只知道,如果頁面參數等於本使用UserPreferences規則應該被應用,我想這樣做

RewriteRule ^userpreferences/(a-zA-Z0-9)+ /loremipsum/?pg=userpreferences&fav=$1 [L] 

但它不會工作,它似乎因爲userpreferences不會是一個字符串,我得到一個服務器錯誤。

回答

1

你可以做一個重寫規則如下所示:

RewriteRule ^(.*)$ index.php?parameter=$1 [NC] 

,然後你會得到:

index.php?parameter=param/value/param/value 

從瀏覽器你:

http://localhost/parameter/param/value/param/value 

內PHP文件,你可能訪問您的參數:

<?php 

$parameter = explode("/", $_GET['parameter']); 
for($i = 0; $i < count($parameter); $i+=2) { 

    echo $parameter[$i] ." has value: ". $parameter[$i+1] ."<br />"; 

} 

?> 
+0

嘿謝謝你,我不知道我重寫我的規則的方式是導致只有一個get變量的所有參數,php代碼是關鍵,沒有其他任何修改,這是我最簡單的方法直到現在才發現。非常感謝你的時間:) –

+1

不客氣。任何時候 :) –

相關問題