所以我想在我的.htaccess文件中做一个mod_rewrite,以便以下浏览器请求:
www.mysite.com/portal/v1/v2/v3
...将在php中重写和处理:
www.mysite.com/portal.php?n1=v1&n2=v2&n3=v3
这里需要注意的是,这些GET变量中的部分或全部可能是空白的,这意味着浏览器请求可以采用以下任何一种形式:
www.mysite.com/portal/v1/v2/v3
www.mysite.com/portal/v1/v2
www.mysite.com/portal/v1
www.mysite.com/portal
我可以在php文件中解决问题,但是我应该为.htaccess使用什么代码?谢谢!
答案 0 :(得分:0)
在/.htaccess
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)/(.*)/?$ /portal.php?n1=$1&n2=$2&n3=$3 [QSA,L,NC]
RewriteCond确保如果请求已经用于文件或目录,则将跳过RewriteRule。
$1
$2
$3
指的是RewriteRule
内匹配的模式。
答案 1 :(得分:0)
您可以在DOCUMENT_ROOT/.htaccess
文件中使用此代码:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ portal.php?n1=$1&n2=$2&n3=$3 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$ portal.php?n1=$1&n2=$2 [QSA,L]
RewriteRule ^([^/]+)/?$ portal.php?n1=$1 [QSA,L]
RewriteRule ^/?$ portal.php [L]