2012-02-18 90 views
0

我想重寫網址,如下所示:重定向通過htaccess的不工作

網址:http://localhost/my_site/?file_name=sample

這是我的網址我想表明它想:

網址:http://localhost/my_site/sample

這意味着我想刪除file_name參數並獲取參數值並將其設置在URL中,用於設置此我已使用bel嗷嗷代碼:

RewriteEngine On 
RewriteBase /my_site/ 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.*)$ /?file_name=$1 [QSA,L] 

但它不工作,當我輸入的http://本地主機/ my_site /樣品它顯示我目前在我的本地的所有網站,這意味着它帶我去HTTP的列表: // localhost而不是需要頁面。我在做什麼錯?

請幫幫忙,提前

回答

1

假設mysite文件夾DocumentRoot下。添加到您的

RewriteEngine On 
RewriteBase/

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule^- [L] 

RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !\.\w+$ 
RewriteCond %{REQUEST_URI} !/$ 
RewriteRule (.*) /$1/ [R,L] 

RewriteCond %{REQUEST_URI} ^/(my_site)/([\w\d-]+)/$ [NC] 
RewriteRule^%1/?file_name=%2 [L,QSA] 

RewriteCond %{QUERY_STRING} !^$ 
RewriteCond %{QUERY_STRING} (?:(.*)&)?file_name=([\w\d-]+)(.*) [NC] 
RewriteRule ^(my_site) $1/%2/?%1%3 [L,R] 

對於服務器端:

RewriteCond %{REQUEST_URI} ^/([\w\d-]+)/$ [NC] 
RewriteRule^/?file_name=%1 [L,QSA] 

RewriteCond %{QUERY_STRING} !^$ 
RewriteCond %{QUERY_STRING} (?:(.*)&)?file_name=([\w\d-]+)(.*) [NC] 
RewriteRule^%2/?%1%3 [L,R] 
+0

現在它向我顯示此錯誤: 「在此服務器上未找到請求的URL/my_site/=示例。」 – 2012-02-18 13:13:10

+0

@DheerajAgrawal立即嘗試。 – ThinkingMonkey 2012-02-18 17:36:21

+0

@ThankingMonkey:感謝您的回覆,但仍然無法正常工作,現在它給了我這個錯誤:「在此服務器上找不到請求的URL/my_site /示例。」 &URL自動從http:// localhost/my_site/sample更改爲「http:// localhost/my_site /?file_name = sample」 – 2012-02-20 05:49:34

0

感謝試試這個,如果它的工作原理:

RewriteEngine On 
RewriteBase /my_site/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ file_name=/$1 [L] 

警告:未經測試

+0

感謝您的答覆,但遺憾地說,它不工作,同樣的結果,因爲我是之前獲得。 – 2012-02-18 13:11:28