好的,目前以我想要的格式获取网址,我在我的.htaccess中使用它
RewriteRule ^user.php/([0-9]+)/?$ user.php?id=$1 [NC,L]
RewriteRule ^user.php/edit/([0-9]+)/?$ user.php?id=$1&type=edit [NC,L]
网址,重定向到
domain/user/7/ -> domain/user?id=7
domain/user/edit/7/ -> domain/user?id=7&type=edit
工作正常,但我希望能够做出更好的价值对网址,而不仅仅是严格匹配。
一个例子是
domain/user/key/value/key/value/key/value/
-> domain/user.php?key=value&key=value&key=value
我在看
.htaccess rewrite to convert directories into /key/value/key/value
如果您只是想从主路径重定向(即localhost / index.php),该示例效果很好,但我希望仅在域/用户时触发,而我无法将其与使用'用户匹配'作为触发器
我目前的.htaccess
# Pretty url's
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^user.php/([0-9]+)/?$ user.php?id=$1 [NC,L]
RewriteRule ^user.php/edit/([0-9]+)/?$ user.php?id=$1&type=edit [NC,L]
这是可能的,如果是这样的话?
答案 0 :(得分:1)
Deja vu time
!!!我回复的时候写了这个答案:P
以下是您可以为您的案件做的事情:
RewriteEngine On
RewriteRule ^(user)/([^/]*)/([^/]*)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC]
RewriteRule ^(user)/?$ /$1.php [L,NC]
RewriteRule ^user.php/([0-9]+)/?$ user.php?id=$1 [NC,L]
RewriteRule ^user.php/edit/([0-9]+)/?$ user.php?id=$1&type=edit [NC,L]
# Pretty url's
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
使用这些规则,/user/n1/v1/n2/v2/n3/v3/n4/v4
的网址将被内部转发至/user.php?n4=v4&n3=v3&n2=v2&n1=v1 treating each pair of URL segments separated by / as a name-value pair for
QUERY_STRING`。
答案 1 :(得分:1)
Ok this is working for me
RewriteRule ^(user.php)/([^/]*)/([^/]*)(/.*)?$ /$1/$4?$2=$3 [L,QSA,NC]
RewriteRule ^(user)/?$ /$1.php [L,NC]
# Pretty url's
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
URL
/user/n1/v1/n2/v2/n3/v3/n4/v4
输出
Array ( [n4] => v4 [n3] => v3 [n2] => v2 [n1] => v1 )