我创建一个这样的 mod_rewrite 规则
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME}\.php !-f
RewriteRule ^(.*)$ ./page.php?key=$1
有用!但我想这样做:
www.site.com/var1.var2.var3
(变量用点隔开)用-或_隔开没问题,但如果我把点隔开,为什么?
我创建一个这样的 mod_rewrite 规则
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME}\.php !-f
RewriteRule ^(.*)$ ./page.php?key=$1
有用!但我想这样做:
www.site.com/var1.var2.var3
(变量用点隔开)用-或_隔开没问题,但如果我把点隔开,为什么?
我假设您正在尝试这样的规则
RewriteRule ^(.*).(.*).(.*)$ ./page.php?key=$1&key2=$2&key3=$3
但是您应该记住要转义要解释为句点的点。有很多方法可以解决这个问题,但如果您是.htaccess
文件新手,这里有一个简单的方法:
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]
笔记:
将存在检查拆分为的原因是您需要处理诸如 CSS 和图像 (PNG/GIF/PNG) 文件之类的文件以及您的应用程序语法。