2012-08-05 63 views
0

我有不知道如何正確使用.htaccess文件和所有的指南和教程那裏不是最容易理解的。無法弄清楚什麼是錯我的.htaccess重寫規則聲明

這裏是我當前的代碼...

Options +FollowSymlinks 
RewriteEngine on 

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

RewriteRule ^/([^/]+)/([^/]+)/([^/]+)$ productpage.php?productidpage=$1&brand=$2&productname=$3 [L,NC] 

我希望每當productpage.php被加載它顯示爲www.mysite.com/$1/$2/$3/

嗯,其實我希望它顯示爲www.mysite.com/$2/$3如果可能的話。

productidpage變量是代碼中加載頁面的代碼,$2$3純粹只是爲了修改URL而已。

+0

請參閱[提示調試的.htaccess重寫規則(http://stackoverflow.com/questions/9153262/tips-for-debugging-htaccess-rewrite-rules)。 – TerryE 2012-08-05 11:37:00

回答

0

嘗試在你的正則表達式去掉斜線。當規則處於htaccess文件中時,在匹配RewriteRule的表達式時,將刪除URI中的前導斜槓。

# no slash---v maybe a slash here---v 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ productpage.php?productidpage=$1&brand=$2&productname=$3 [L,NC] 
+0

我刪除了斜線,但它仍然沒有做任何事情。 – user1576895 2012-08-05 05:18:13

+0

@ user1576895哦,你也在表達式末尾缺少斜線(在$'之前)。 – 2012-08-05 05:20:02

+0

grrr我把斜線插入,沒有效果。它只是無所事事,甚至不會拋出一個錯誤。但如果我故意在那裏輸入垃圾,它確實會拋出一個錯誤。 – user1576895 2012-08-05 05:27:52

0

確保AllowOverride FileInfo或(AllowOverride All)設置爲包含您的.htaccess文件<Directory>

然後在服務器或虛擬主機級別上設置RewriteLogRewriteLogLevel來調試您的重寫規則。

更新:我強烈建議您檢查Ask Apache - 它有噸的mod_rewrite信息和示例。

+0

^好吧,所有這一切都必須去,在.htaccess或實際的服務器設置。我將在這裏進入未圖表的領域。 – user1576895 2012-08-05 05:21:33

+0

'AllowOverride'在全局服務器設置中被識別,在''內部和''內。只能爲整個服務器或特定虛擬主機啓用重寫日誌記錄。 – 2012-08-05 05:52:13

相關問題