2012-11-17 90 views
1

在我的申請,我試圖鏈接http://domain.com/auth/login/auth/registerhttp://domain.com/?p=auth&action=$其中$是這樣的:http://domain.com/auth/$Apache的mod_rewrite規則寫入

我的代碼是

RewriteEngine On 
RewriteRule ^auth/(.+)$ ?p=auth&action=$1 

,但現在我所有的CSS和圖像混亂up ._。

+1

查看相關部分中的所有內容,看看是否可以拼湊在一起。 –

+1

不應該得到一個downvote – Ben

回答

3

看起來很好,除了我會建議使用完整的網址來代替重定向。並減少與其他規則的互動,你應該添加[L]標誌停止重寫過程與規則相匹配的請求:

RewriteEngine On 
RewriteRule ^auth/(.+)$ http://domain.com/?p=auth&action=$1 [L] 

和一般的提示:如果你有機會到服務器配置,然後把你的重寫規則,而不是使用.htaccess樣式重寫。這是更可靠,更易於配置:

RewriteEngine On 
RewriteRule ^/auth/(.+)$ /index.php?p=auth&action=$1 [L] 

(我假設你使用的文件index.php作爲路由器,也可能是任何其他語言或:

RewriteEngine On 
RewriteRule ^/auth/(.+)$ /?p=auth&action=$1 [L] 
有一個稍微好一點的性能

甚至解決方案)。

+0

okies,非常感謝它的工作。那我把重寫代碼放在哪裏呢?我有權訪問服務器配置。 – qaisjp

+0

另一個問題是,現在它只是重定向到該網址,不保留URL的/ auth/whatever – qaisjp

+0

把它放在你配置默認或虛擬服務器配置中的'DocumentRoot'和'Options'的地方之上。那麼你可能必須在'RewriteRule'中使用絕對路徑。另一個優點是:如果事情不能按預期工作,可以啓用'RewriteLogging'(見優秀的手冊)。 – arkascha