2016-10-27 26 views
1

这是我的.htaccess如何设定正确的重写规则为epmty查询

RewriteEngine On 
RewriteBase/
RewriteRule ^(.*) data.php?chn=$1 [L,QSA] 

我有2个PHP文件。

的index.phpdata.php

我想打电话的index.php当请求是domain.com/data.php当请求的是domain.com/(anything)

+0

你在哪里主持?他们是否允许.htaccess覆盖? – WEBjuju

+0

web apache2 sir –

+0

澄清,您托管公司的名称是什么?或者如果你是自己托管,你可以验证你有允许覆盖所有ht​​tp://stackoverflow.com/questions/18740419/how-to-set-allowoverride-all – WEBjuju

回答

0

要的index.php重新路由...

if (!empty($_GET['chn'])) { 
    require('data.php'); 
    exit(); 
} 

data.php已经将有$ _GET [ 'CHN']提供给它。

,或者如果你不排队过一个GET变量,然后你可以检查REQUEST_URI和做同样的事情:

if (@$_SERVER['REQUEST_URI']!='/')) { 
    require('data.php'); 
    exit(); 
} 
0
RewriteEngine On 
    RewriteRule ^([^\.]+)$ $1.php [NC,L] 
    RewriteRule ^/(\d+)*$ ./data.php?chn=$1 

试试这个。

注:当您需要的情况下使用的.htaccess,将/域名后会触发第二重写规则的情况下,这意味着用户将尝试打开字面上domain.com/data.php?chn=

+0

它的工作!谢谢 –

0

你需要你的正则表达式模式从改变(+),以避免重写您的主页,否则为/也将被改写为data.php请求(*):

试试这个规则:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_URI} !^/data\.php [NC] 
RewriteRule ^(.+) data.php?chn=$1 [L,QSA] 
0

的工作!谢谢大家使用此代码:

RewriteEngine On 
RewriteBase/
RewriteRule ^([^\.]+)$ data.php?chn=$1 [L,QSA]