2016-02-07 109 views
3

我一直在這個工作了幾天,現在我想知道是否有人可以指出我在正確的方向請...我想通過兩個變量在我的重寫。HTACCESS:具有多個變量的動態重寫url

除非給定的URL是一個文件或目錄,我想所有的URL進行動態改寫如下:

example.com/category - > example.com/index.php?p=
類 example.com/category/page - > example.com/index.php?p=category &文章=頁
example.com/category2/page - > example.com/index.php?p= category 2 & article = page

我有一個困難時期試圖把某些東西的動態如下:
RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L]

我想這一點,但它不工作:
RewriteRule ^(.+?)/(.+?)$ ?p=$1&article=$2 [L]

...也嘗試這一點,但它不工作之一:
RewriteRule ^(.*)/(.+?)$ ?p=$1&article=$2 [L]

我試圖避免將在下面,使其工作:
RewriteRule ^category2/(.+?)$ ?p=category2&article=$1 [L]

下面是完整的代碼:

Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^category/(.+?)$ ?p=category&article=$1 [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ ?p=$1 [L] 

UPDATE:

這實際上爲我做:

RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$2 [L] 

謝謝!! 安德魯

+0

我忘了,第二個參數是可選的,祝賀的,但你肯定**'$ 2' **是否正確輸出OP中的第二個參數「**'頁面**」?我認爲它會輸出「**'/頁面**」而不是 –

+0

檢查更新後的答案 –

+0

你的正確,應該是$ 3。謝謝你! – Andrew

回答

2

我不是專家,但我認爲這會爲你做它:

RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ([^/]+)/([^/]+) index.php?p=$1&article=$2   [L] 

[^/]+匹配除/一切,導致當htaccess.madewithlove.be

enter image description here

測試

編輯:

,因爲我完全忘了,第二個參數是可選的,在OP偉大的更新幾乎做到了,除了它增加了一個/在參數2的值開始的事實,因爲$2被捕獲的外組,而我們所需要的一個內,如圖此圖像中:

enter image description here


相反更換$2$3,這應該修復它:

RewriteRule ^([^/]+)(/([^/]+))? ?p=$1&article=$3 [L] 

enter image description here