如何在没有重定向localhost的情况下重写htaccess中的url?

时间:2016-11-08 09:03:45

标签: .htaccess mod-rewrite

试着再次提出我的问题并尽我所能解释。

我在Windows 10上运行WAMP .Apache版本2.4.18。我的项目位于名为www的{​​{1}}文件夹中。 hoidja.ee已启用,mod_rewrite已设置为全部。

在该文件夹中我有AllowOverride文件,我试图在没有重定向的情况下完成重写,但它根本不起作用。我知道.htaccess文件正在运行,因为我可以将.htaccess重写为index.php,并且它工作正常。

我有一个包含所有用户列表的页面。您可以单击该用户,它将转到您的网址:

/home/

我希望如何显示

http://localhost/Hoidja.ee/hoidja.php?user_id=94&username=John

没有任何重定向。

我尝试过:

http://localhost/Hoidja.ee/user/John

这给了我404 / user / 94不存在。

#tried first with only user_id
RewriteCond %{QUERY_STRING} ^user_id=([A-Za-z0-9-]+)$
RewriteRule ^hoidja\.php$ /user/%1? [L]

这并没有在视觉上做任何事情。如果我手动在网址中输入RewriteRule ^user/([0-9]+)/([A-Za-z0-9-]+)/?$ hoidja.php?user_id=$1&username=$2 [QSA] ,它会转到该页面并显示用户数据,但如果我输入原始网址,则不会重写该网页。我也在使用http://localhost/Hoidja.ee/user/94/John

我已经尝试了所有可能的方法,但似乎没有任何效果。如何完成网址重写?

1 个答案:

答案 0 :(得分:0)

您收到404错误,因为您正在重写为不存在的路径 / user / 94 。您需要重定向 /hoidja.php?user_id = / user / 94 ,然后将 / user / 94 重写回真实位置。

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{QUERY_STRING} ^user_id=([A-Za-z0-9-]+)$
RewriteRule hoidja\.php$ /hoidja.ee/user/%1? [L,R]
RewriteRule ^(?:hoidja\.ee/)?user/(.+)$ /hoidja.ee/hoidja.php?user_id=$1 [L]