代码之家  ›  专栏  ›  技术社区  ›  Scott

如何对动态生成的URL使用htaccess

  •  0
  • Scott  · 技术社区  · 17 年前

    我看到使用此约定的站点。

    我正试图在我的网站上做到这一点。“傀儡”是动态的,基本上是用户名。

    所以hxxp://www.mysite.com/golem 将转到傀儡页面。

    问题是:

    1. 如何使htaccess始终添加&user_name=golem到查询字符串中的所有我的php文件?而不在浏览器地址栏中显示。所以基本上,它需要获取URL的第一个路径,该路径带有斜杠,并将其作为查询添加到我正在查看的任何PHP页面的末尾。

    2. 如何做到这一点hxxp://www.mysite.com/golem/details.php 实际运行文件的实际位置为hxxp://www.mysite.com/details.php?user_name=golem (路径中没有“傀儡”),但仍在地址栏中显示假URL。

    3. 使其适用于其他URL,如hxxp://www.mysite.com/golem/page.php 和hxxp://www.mysite.com/golem/view.php 等等

    看了教程等,但找不到答案。谢谢你的帮助!

    1 回复  |  直到 17 年前
        1
  •  1
  •   FWH    17 年前

    如果尚未完成,请启用mod_重写。 在.htaccess中,必须添加一些重写规则。

    RewriteRule ^([^/]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L]
    

    如果不起作用,请尝试使用此选项:

    RewriteRule ^/([^/]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L]
    

    但也有一个对应点:如果你有经典的URL,它们将被这些规则捕获。如果您可以区分用户名和脚本名,那么有一个解决方案。假设用户名不能包含点。然后,您将使用以下规则替换该规则:

    RewriteRule ^([^/.]+)/([^?]*)\??(.*)$ $2?$3&user_name=$1 [L]
    

    (注意第一个括号中的点——它表示如果url包含一个点,那么它将与规则不匹配)。

    现在,在参数之前包含一个点的每个url都将被视为“正常”url。