.htaccess mod_reweite htaccess不能与var中的点一起工作

.htaccess mod_reweite htaccess不能与var中的点一起工作,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我创建了这样一个mod_重写规则 RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME}\.php !-f RewriteRule ^(.*)$ ./page.php?key=$1 它起作用了!但我想这样做: www.site.com/var1.var2.var3 变量是用点分隔的,用-分隔或u没有问题,但是如果我把点放在这里不起作用,为什么?我假设您正在尝试这样的规则 RewriteRule ^(.*).(

我创建了这样一个mod_重写规则

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME}\.php !-f 
RewriteRule ^(.*)$ ./page.php?key=$1 
它起作用了!但我想这样做:

www.site.com/var1.var2.var3 

变量是用点分隔的,用-分隔或u没有问题,但是如果我把点放在这里不起作用,为什么?

我假设您正在尝试这样的规则

RewriteRule ^(.*).(.*).(.*)$ ./page.php?key=$1&key2=$2&key3=$3
但是你应该记住避开那些你想解释为句点的点。纠正此问题的方法有很多,但如果您不熟悉.htaccess文件,这里有一个简单的方法:

注:

第一条规则使用^作为始终匹配的模式,-表示不替换它。 第二个使用$0,这意味着整个匹配模式 规则3-5匹配3,2,1参数选项 [L]最后一个标志表示跳过其余规则 如果使用其他参数,则需要QSA标志。 将existance检入拆分为的原因是,您需要处理CSS和图像PNG/GIF/PNG文件以及应用程序语法等文件

RewriteEngine  On
RewriteBase    /

# Skip existing files or directories
RewriteCond %{SCRIPT_FILENAME}     -d [OR] 
RewriteCond %{SCRIPT_FILENAME}     -f
RewriteRule ^                      -  [L]

# Add default PHP extension when appropriate
RewriteCond %{SCRIPT_FILENAME}.php -f
RewriteRule ^.*                    $0.php  [L]

# Pick up 1,2 and 3 parameter versions 
RewriteRule ^(.*?)\.^(.*?)\.(.*)$ page.php?key=$1&key2=$2&key3=$3 [QSA,L]
RewriteRule ^(.*?)\.(.*?)$        page.php?key=$11&key2=$2        [QSA,L]
RewriteRule ^(.*?)\.$             page.php?key=$1                 [QSA,L]