2010-01-23 48 views
1

比方說,我想支持URL(如Twitter)其中: twitter.com/username重定向到twitter.com/user_name.php?user=usernamemod_rewrite的優先

我有以下

RewriteRule ^(.*)$ user_name.php?user=$1 

而且工作正常。但現在的問題是,一切,包括twitter.com/index.php當然會重定向到user_name.php

如何創建異常或優先順序,以便「真實文件」不被重寫?我試圖在index.php之前和之後添加一條明確的規則,但它似乎不起作用。

回答

2

您需要添加RewriteCond這個

RewriteCond %{REQUEST_URI} !-f [OR] # for existing files 
RewriteCond %{REQUEST_URI} !-d # for existing directories 
RewriteRule ^(.*)$ user_name.php?user=$1 
+0

好了,好多了,然後我的解決方案 - 假設它的工作原理。我必須在我有一個項目上嘗試。你能解釋一下這裏發生了什麼嗎? – Erik 2010-01-23 16:15:40

+0

這對我不起作用,domain.com/index.php仍然使用user_name.php的重寫規則 – catbelly 2010-01-23 16:22:02

+0

其實你很親密,這適用於我:RewriteCond%{REQUEST_FILENAME}!-f – catbelly 2010-01-23 16:28:44