2011-09-20 128 views
1

我的工作在網站上,我面臨着一個大問題是:解決衝突的URL重寫規則

  1. 我希望我的所有流量http://www.example.com/http://example.comhttp://www.example.com/folder/http://example.com/folder/

(注:這裏關鍵的是它可以爲無限數量的子文件夾或頁面工作,只要它的同一根域)

  1. 我w螞蟻重寫http://example.com/namehttp://example.com/folder/page.php?page= $ name,除了我會指定的一些網址,如http://example.com/css。 這一次,網址仍然顯示http://example.com/name這是訪問過的頁面,但實際上頁面已被重寫。這與第一種情況不同,即更改地址欄中的網址。

現在,這是我所:

<IfModule mod_rewrite.c> 
    Options +FollowSymlinks 
    Options -Multiviews 
    RewriteEngine on 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
    RewriteCond %{REQUEST_URI} !^/(candidates|css|employers|layout|pics|securimage)/?$ 

    RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 
    RewriteRule ^([^/]+)/?$ employers/page.php?page=$1 [L] 
</IfModule> 

的問題,我和我上面所說有有有:

  1. 它不重定向到http://www.example.com/http://example.com

  2. 這似乎改寫爲好,但http://www.example.com/name當我有一個網址與像http://example.com/css一個例外它改變了網址http://example.com/css/?page=css

請問我該如何解決這個問題。

非常感謝。

回答

0

你必須分開你的條件ANS重寫規則:

對於WWW子域名:

RewriteCond %{HTTP_HOST} ^www.example.tld$ 
RewriteRule ^(.*) http://example.tld/$1 [QSA,R=301] 

那麼對於QSA重定向,除非該文件存在:

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