2012-07-15 55 views
0

我正在嘗試處理應用程序的多個區域,但URL並未按預期重新編譯。htaccess - 多個重寫和捕獲組

這是.htaccess文件:

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^division/(.*)/section/(.*)$ ./index.php?division=$1&section=$2 
RewriteRule ^division/(.*)$ ./index.php?division=$1 
RewriteRule ^area/(.*)$ ./index.php?area=$1 

什麼期望:

  1. 如果URI匹配的division/some_division/section/some_section重寫index.php?division=some_division&section=some_section

  2. 如果沒有部(section/some_section)被定義,轉到第二規則 -

    如果URI匹配division/some_division重寫只index.php?division=some_division

  3. 如果沒有分割被定義,並且的URIarea/some_area重寫匹配到index.php?area=some_area

我幾乎可以肯定我可以結合兩條第一條規則,我有三條編輯此正則表達式,但它沒有工作:

​​

它應該使/section/some_section可選值。

不幸的是沒有任何作品。有任何想法嗎?

回答

2
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^division/(.*)/section/(.*)$ ./index.php?division=$1&section=$2 [QSA,L] 
RewriteRule ^division/(.*)$    ./index.php?division=$1   [QSA,L] 
RewriteRule ^area/(.*)$     ./index.php?area=$1    [QSA,L] 
+0

.htaccess文件位於子目錄中。 'RewriteBase /'不起作用,還有'/?'。所以你改變的只是'[QSA,L]',它沒有改變任何東西。 – 2012-07-15 12:28:13

+0

我不認爲我必須通知它是一個子目錄,對不起。此外,您的答案包含'%{SCRIPT_FILENAME}'。也許你忘了什麼? – 2012-07-15 12:35:29

+0

是的。抱歉。我很難看到 – 2012-07-15 12:41:37