.htaccess mod_reweite htaccess不能与var中的点一起工作
我创建了这样一个mod_重写规则.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 ^(.*).(
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]