2014-12-31 47 views
3

我想傳遞url參數,但參數沒有傳遞到所需的頁面。.htaccess重寫參數沒有傳遞到目標頁面

早些時候我的網站託管在cpanel和下面的代碼工作成功,但在我將站點移動到VPS服務器與Cent OS Webpanel與服務器上運行的Varnish緩存和Apache後,參數不會傳遞到目標網頁/網址。

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

RewriteRule ^download/(.*).html download.php?q=$1 [L,QSA] 

我想運行的網址:重寫後www.example.com/download/anything.html
和目標URL是www.example.com/download.php?q=anything
的問題是,重寫規則是工作,但參數未通過。

但是,如果我使用下面的代碼參數傳遞成功。

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

RewriteRule ^([a-zA-Z_0-9-]+)$ download.php?q=$1 [L,QSA] 

或下面的代碼

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

RewriteRule ^(.*) download.php?q=$1 [L,QSA] 

和我正在下面的網址,這些參數傳遞到目標頁面成功
www.example.com/anything
目標網址:www.example.com/download.php?q=anything


但我需要以下格式的網址www.example.com/download/*****.html用實際查詢替換*星號。

如果我向重寫url添加一些靜態文本,如download/(。*).html,則參數不會傳遞到目標頁面。

感謝

回答

2

最有可能的新服務器默認啓用MultiViews選項。廣場上的.htaccess的頂部這一行來禁用它:

Options -MultiViews 

選項MultiViews所使用的Apache's content negotiation modulemod_rewrite之前和運行,使文件的Apache服務器匹配擴展。所以/file可以在URL中,但它將服務/file.php

+1

感謝您的回答,這適用於我:) – AmarBunty

+0

不客氣,很高興它的工作。 – anubhava