2011-07-17 22 views
2

我在我的項目中使用GET請求,我想以如此簡單的方式重寫URL:如果我訪問mydomain.com/test,它將在我的服務器端請求mydomain.com/get.php?txt=test如何在不影響index.php規則的情況下製作.htaccess RewriteRule

這裏是我的.htaccess重寫規則,它的工作原理確定,但問題是它也影響了我的index.php,所以如果我去主頁啓動:mydomain.com/get.php?txt=test請求和不開放mydomain.com/index.php因爲我重寫規則的。

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule (.*)$ get.php?url=$1 [L] 

我不想做任何額外的能級像mydomain.com/1/test的路徑,它應該是對根的一個新的水平。

任何幫助表示讚賞。謝謝!

回答

2

最常見的方式是添加條件,只改寫不存在的資源(文件&文件夾):

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) get.php?url=$1 [L] 

另一種可能的方法(將工作的優良您的原始請求)當要求/index.php時忽略這樣的規則:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/index\.php 
RewriteRule (.*) get.php?url=$1 [L] 

方法#1是高度推薦並且非常普遍。但是.. 也許您通過get.php也提供所有資源(圖片/樣式/ javascripts/etc)(我不知道您的應用程序的功能和工作原理),因此我提供了另一種方法。

+0

感謝第一個偉大的作品!好主意忽略不存在的資源!再次感謝你! – Tim

0

重寫規則之前添加

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

+0

感謝您分享您的知識,您的RewriteCond應該可以正常工作,並且可以添加爲LAzyOne所寫,並且可以工作!謝謝。 – Tim

0

這樣好嗎?

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/index\.php$ 
RewriteRule (.*)$ get.php?url=$1 [L] 
+0

非常感謝,用LazyOne方法完成。 – Tim

相關問題