2009-12-01 53 views
0

我對使用apache mod_rewrite重寫url有疑問。我是mod_rewrite的新手,我沒有任何正則表達式的經驗。關於使用apache重寫url的問題mod_rewrite

我想要做的是:

重寫//網頁/內容/公/

重寫/客戶//網頁/內容/客戶/

我該如何達到上述目的。

我想:

<IfModule mod_rewrite.c> 

    Options +FollowSymLinks 
    RewriteEngine on 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-l 

    RewriteRule ^/clients/$ web/content/clients/ [L] 
    RewriteRule ^(.*)$ web/content/public/$1 [L] 
    </IfModule> 

但它不工作。我能做什麼?

回答

0

^(.*)$包含斜槓。所以不要在重寫的模式中包含斜槓。 但在重寫的模式頭部包含根斜槓。

RewriteRule ^/clients(.*)$ /web/content/clients$1 [L] 
RewriteRule ^(.*)$ /web/content/public$1 [L] 

檢查apache訪問日誌和錯誤日誌,看看哪種請求的URL返回。

check the documentation,尤其是列表標記爲「這裏是所有可能的替換組合及其含義:」

0

試試這個:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -l 
RewriteRule^- [L] 
RewriteRule ^/clients/$ web/content/clients/ [L] 
RewriteRule ^/(.*)$ web/content/public/$1 [L] 

如果你想使用在.htaccess文件規則,從模式中刪除前導斜槓。