如何为epmty查询设置正确的RewriteRule


how to set right RewriteRule for epmty query

这是我的.htaccess

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

我有两个php文件。

index.phpdata.php

当请求为domain.com/data.php时,我想调用index.php,当请求为domain.com/s(任何东西(.

从index.php重新路由…

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

data.php已经有$_GET['chn']可用。

或者,如果你没有排队等待get-var,那么你可以检查REQUEST_URI并做同样的事情:

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

试试这个。

注意:在您想要的情况下使用.htaccess时,将/放在域名后面将触发第二个RewriteRule情况,这意味着用户将尝试按字面意思打开domain.com/data.php?chn=

您需要将正则表达式模式从(.*(更改为

试试这个规则:

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

它的工作!谢谢大家使用这个代码:

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