我看到使用此约定的网站。
hxxp://www.twitter.com/golem
hxxp://www.twitter.com/golem/following
我想在我的网站上这样做。 “golem”是动态的,基本上就是用户名。
所以hxxp://www.mysite.com/golem会去golem页面。
hxxp://www.mysite.com/golem/details.php将转到golem的详细信息页面。
问题是:
如何制作htaccess以便它总是将& user_name = golem添加到查询字符串中的所有php文件中?没有在浏览器地址栏中显示它。所以基本上它需要采用具有斜杠的URL的第一个路径,并将其作为查询添加到我正在查看的任何PHP页面的末尾。
如何制作如此hxxp://www.mysite.com/golem/details.php实际上在hxxp://www.mysite.com/details.php?user_name = golem的实际位置运行文件(路径中没有“golem”)WHILE仍然在地址栏中显示虚假URL。
让它适用于其他网址,例如hxxp://www.mysite.com/golem/page.php和hxxp://www.mysite.com/golem/view.php等等
看了教程等但找不到答案。感谢任何帮助!
答案 0 :(得分:1)
如果尚未启用mod_rewrite,则启用它。 在你的.htaccess中,你必须添加一些RewriteRule。
试试这个:
RewriteRule ^([^/]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L]
如果不起作用,请试试这个:
RewriteRule ^/([^/]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L]
但是有一个对应物:如果你有经典的URL,它们将被这些规则捕获。如果您可以区分用户名和脚本名称,则可以使用解决方案。假设用户名不能包含点。然后,您将用这个替换规则:
RewriteRule ^([^/.]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L]
(注意第一个括号中的点 - 它表示如果网址包含一个点,那么它将与规则不匹配。)
现在,在参数之前包含点的每个网址都将被视为“普通”网址。
如果用户名包含一个点,我们就会遇到问题,因为你怎么能说details.php是php脚本或用户名?在这些情况下,编写仅匹配我们想要的RewriteRules变得非常困难。而且测试它们也很困难,因为有很多边缘情况很难想到。