我正在尝试从以下内容重写URL:
http://www.domain.com/index.php/service/variable1/value/variable2/value ....一直到8个变量。
对此:
http://www.domain.com/index.php?pagekey=service&variable1=value&variable2=value ....一直到8个变量。
变量将在页面之间发生变化,因此我无法在重写规则中对它们进行硬编码。变量和值都需要是htaccess变量。
我有以下htaccess代码在Apache 2.2.9(debian)上完美运行,但相同的代码DOESNT在apache 2.2.16(debian)或apache 2.2.22(debian)上工作
任何人都有任何想法,为什么会这样?
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{DOCUMENT_ROOT}/$1 -f
RewriteRule ^[^/]+/([^.]+\.(?:js|css|jpe?g|png|gif|php))$ /$1 [L,R=301,NC]
RewriteRule ^index/(.*)$ index.php?pagekey=$1
RewriteRule ^index.php/(.*)$ index.php?pagekey=$1
RewriteRule ^index/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3
RewriteRule ^index.php/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3
RewriteRule ^index/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3&$4=$5
RewriteRule ^index.php/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3&$4=$5
RewriteRule ^index/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3&$4=$5&$6=$7
RewriteRule ^index.php/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3&$4=$5&$6=$7
RewriteRule ^index/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3&$4=$5&$6=$7&$8=$9
RewriteRule ^index.php/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)$ index.php?pagekey=$1&$2=$3&$4=$5&$6=$7&$8=$9
答案 0 :(得分:0)
您可以使用这3个通用规则:
处理所有这些组合RewriteEngine On
RewriteBase /
RewriteRule ^(index)(?:\.php)?/([^/]+)/?$ $1.php?pagekey=$2 [L,NC,QSA]
RewriteRule ^(index)(?:\.php)?/([^/]+)/([^/]+)/([^/]+)/?$ $1.php?pagekey=$2&$3=$4 [L,NC,QSA]
RewriteRule ^(index)(?:\.php)?/([^/]+)/([^/]+)/([^/]+)(/.*)?$ $1.php/$2$5?$3=$4 [L,NC,QSA]