Apache .htaccess重写参数未传递到目标页
我想传递url参数,但参数没有传递到所需的页面 早些时候,我的站点托管在cpanel上,下面的代码可以成功运行,但在我将站点转移到VPS服务器后,服务器上运行了Cent OS Webpanel和Varnish缓存以及apache,这些参数没有在目标页面/url上传递Apache .htaccess重写参数未传递到目标页,apache,.htaccess,mod-rewrite,centos,varnish,Apache,.htaccess,Mod Rewrite,Centos,Varnish,我想传递url参数,但参数没有传递到所需的页面 早些时候,我的站点托管在cpanel上,下面的代码可以成功运行,但在我将站点转移到VPS服务器后,服务器上运行了Cent OS Webpanel和Varnish缓存以及apache,这些参数没有在目标页面/url上传递 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^downloa
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^download/(.*).html download.php?q=$1 [L,QSA]
我想运行url:www.example.com/download/anywhere.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]
我正在运行下面的url,参数成功地传递到目标页面www.example.com/anything
目标url:
www.example.com/download.php?q=anything
但是我希望URL的格式如下
www.example.com/download/*****.html
用实际查询替换*星号
如果我向重写url添加一些静态文本,如下载/
(.*).html
,则参数不会传递到目标页面
谢谢很可能新服务器默认启用了
多视图
选项。将此行放在.htaccess顶部以禁用它:
Options -MultiViews
选项MultiViews
由Apache的内容协商模块使用,该模块在mod_rewrite
之前运行,并使Apache服务器匹配文件扩展名。所以/file
可以在URL中,但它将提供/file.php