PHP - 带参数的Mod_rewrite

时间:2015-04-06 08:02:40

标签: php apache .htaccess mod-rewrite

我对mod_rewrite有疑问 - 我有以下网址:

http://website.com/profile/index.php?a=profile&u=username

我正在尝试将其重写为:

http://website.com/profile/user/username

我的.htaccess文件中有以下内容:

RewriteEngine on
RewriteRule ^/profile/user/([^/]*)$ /profile/index.php&a=profile&u=$1 [L]

虽然转到重写的网址时,我看不到该页面。我只看到默认的index.php页面。我尝试通过打印来获取参数:print_r($_GET);

这给了我以下内容:

Array ( [a] => u [q] => /username)

现在我的问题是 - 如何将第一个URL重写为第二个?显然,a为空,u也包含/

2 个答案:

答案 0 :(得分:1)

RewriteEngine on
RewriteRule ^profile/user/([^/]*)$ index.php?a=profile&u=$1 [L]

对于网址:localhost/profile/user/test - print_r($_GET)返回:

Array ( [a] => profile [u] => test ) 

答案 1 :(得分:-2)

Mode_rewrite

试试这个

RewriteCond %{QUERY_STRING}     ^$              [OR]
RewriteCond %{QUERY_STRING}     ^query=(.*)$    [NC]
RewriteRule ^/old-search$       /search/%1      [NC,L,R=301]

OR

RewriteCond %{QUERY_STRING}     ^view=tags$     [NC]
RewriteRule ^/blog$             /profile/users/     [NC,L,R=301]

RewriteCond %{QUERY_STRING}     ^view=posts$    [NC]
RewriteRule ^/blog$             /profile/          [NC,L,R=301]


RewriteRule ^/profile$  /profile/%1 [NC,L,R=301]