Htaccess URLRewrite
问题描述:
我有一个关于URL重写的问题。
当我现在请这样的URL:Htaccess URLRewrite
http://domein.ext/error/mysql/2/class.core.php/
它将输出这个在德GET变量:
$_GET['type'] = mysql/2/class.core.php/.php/mysql
$_GET['error'] = 2
$_GET['file'] = class.core.php
但类型不正确?这是我的.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^index/password/ index.php?error=password
RewriteRule ^error/(.*)/(.*)/(.*)/ error.php?type=$1&error=$2&file=$3
我该如何解决这个问题? 和其他一切工作正常..
答
确保你结束所有规则与L
标志。将您的代码更改为:
RewriteEngine on
RewriteRule ^index/password/?$ index.php?error=password [L,QSA,NC]
RewriteRule ^error/([^/]+)/([^/]+)/([^/]+)/?$ error.php?type=$1&error=$2&file=$3 [L,QSA,NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]
答
请尝试将比赛非贪婪:
RewriteRule ^error/(.*?)/(.*?)/(.*)/ error.php?type=$1&error=$2&file=$3
请注意'.'匹配'/'。 –