2017-02-16 47 views
3

我正在嘗試創建一個htaccess腳本來爲零,一個或兩個變量創建目錄。如何通過.htaccess製作動態目錄和子目錄

我正在使用的文件接受以下2個獲取變量。製造和模型。

這是一個3步驟頁面。我目前的頁面位於/new.php。這個頁面允許用戶選擇第一個變量(在我的情況下是車輛製造)。通過在此頁面上選擇一個品牌,用戶將被帶到/new.php?make=Acura。此頁面現在顯示所有Acura型號的列表。從這裏,用戶可以點擊一個模型,他們將被定向到/new.php?make=Acura & model = TLX。他們現在可以選擇一個子模型並將被帶到一個信息頁面。

所以我試圖讓:

new.php to go to /new/ 
new.php?make=XMake to go to /new/XMake/ 
and new.php?make=XMake&model=XModel to go to /new/XMake/XModel/ 

這是據我已經得到了我的代碼:

RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteRule ^new/(.*)$ new.php?make=$1 [L,NC] 

不過,我在此之後添加任何變量似乎打破第一目錄?爲什麼是這樣?

回答

1

您可以在網站根目錄的.htaccess使用這些規則:

Options -MultiViews 
RewriteEngine On 

# skip all files and directories from rewrite rules below 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^new/([\w-]+)/([\w-]+)/?$ new.php?make=$1&model=$2 [L,NC,QSA] 

RewriteRule ^new/([\w-]+)/?$ new.php?make=$1 [L,NC,QSA] 

RewriteRule ^new/?$ new.php [L,NC] 
1

規則的順序很重要。有了這條規則,任何請求/new/,/new/XMake/new/XMake/XModel/匹配,並且以下規則將被忽略。

爲了符合其他規則,更具體的必須先來,例如,

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^new/(.+?)/(.+)$ new.php?make=$1&model=$2 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^new/(.+)$ new.php?make=$1 [L,NC] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^new/$ new.php [L,NC]