摆脱URL中的GET键参数,只保留值

时间:2015-07-23 23:53:07

标签: php .htaccess url get

我想从键中删除GET字符串参数。

例如,这是最初的uri:

http://example.com/api/get_users_method?user_age_from=18&user_age_to=25&user_city=ohio
http://example.com/api/get_users_method?user_age_from=18&user_age_to=25 
http://example.com/api/get_users_method?user_city=ohio

我想这样做:

http://example.com/api/get_users_method/18/25/ohio 
http://example.com/api/get_users_method/18/25 
http://example.com/api/get_users_method/ohio

我怎样才能得到这个结果?我找到了一些解决方案,编辑htaccess文件,但不幸的是它没有工作,也许我在htacces文件中犯了一些错误?我正在使用php。谢谢!

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

RewriteRule ^([a-z0-9]+)/([a-z0-9]+)/?$ /api/get_users_method?user_age_from=$1&user_age_to=$2&user_city=$3 [NC,L]

2 个答案:

答案 0 :(得分:1)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ /api/get_users_method?user_age_from=$1&user_age_to=$2&user_city=$3 [NC,L]

您必须单独处理规则。规则之前的所有条件仅适用于单个规则。该规则不涉及以下规则。

答案 1 :(得分:0)

您将在根.htaccess(高于api目录的某个级别)中有3个单独的规则。

Options -MultiViews
RewriteEngine On

RewriteRule ^(api/get_users_method)/(\w+)/(\w+)/(\w+)/?$ $1?user_age_from=$2&user_age_to=$3&user_city=$4 [NC,L,QSA]
RewriteRule ^(api/get_users_method)/(\w+)/(\w+)/?$ $1?user_age_from=$2&user_age_to=$3 [NC,L,QSA]
RewriteRule ^(api/get_users_method)/(\w+)/?$ $1?user_city=$2 [NC,L,QSA]