gpt4 book ai didi

php - 使用 URL 中的用户名重定向 .htaccess

转载 作者:行者123 更新时间:2023-12-04 06:18:54 29 4
gpt4 key购买 nike

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我想做一个重定向,用户在 URL 中输入他们的用户名并重定向到他们的个人资料,就像这样-> example.com/user/joe重定向 example.com/user/profile.php?username=joe并且明显显示了他们的个人资料。

我环顾四周如何做到这一点,但仍然没有设法让它工作。
我将如何能够做到这一点?我应该把我的 .htaccess 文件放在哪里?


  • 管理员
  • 包括
  • 民众
  • 用户
  • profile.php
  • index.php
  • 最佳答案

    从您的目录看来,“public”目录是您网站的文档根目录。因此,将 .htaccess 文件放在那里。

    这些都没有经过测试。但这应该让你离开地面。我会使用 mod_rewrite 来实现这一点。像这样的东西应该进入你的 .htaccess 文件。

    RewriteEngine On
    RewriteRule ^user/(.+)$ user/profile.php?username=$1 [R,L]

    这应该可以解决您的问题。 [R]标志会导致 Apache HTTPD 要求浏览器重定向并访问新的 URL。不要使用 [R,L]如果您希望重定向是内部的,而用户不知道任何相关信息,则标记。

    话虽如此,这就是我真正要做的。
    RewriteEngine On

    # Canonicalize /user/foo to /user/foo/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^profile/([^/]+)$ /profile/$1/ [R=301,L]

    # Map /user/foo/ to foo's profile
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^profile/([^/]+)/$ profile/index.php?p=$1 [QSA]
    RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d将确保当用户请求资源是服务器中存在的有效文件或文件夹时,只需不要担心所有这些重定向规则,继续并立即提供该文件或文件夹。

    第一 RewriteRule是为了确保如果用户忘记尾部斜杠,服务器会要求浏览器重定向到带有尾部斜杠的 URL。这就是默认情况下 Apache HTTPD 的行为方式(可能是因为 mod_dir),我也会尝试在此处保留相同的行为。

    第二个 RewriteRule确保对 http://example.com/user/foo/ 的请求是一个有效的 URL 但 http://example.com/user/foo/bar/不是。 [QSA]标志确保保留添加到 URL 的任何参数。

    没有 [QSA]旗帜, http://example.com/user/foo/?ref=related+articles会在内部重定向到 http://example.com/user/profile.php?user=foo .使用该标志,它将重定向到 http://example.com/user/profile.php?user=foo&ref=related+articles这是我更喜欢的。

    关于php - 使用 URL 中的用户名重定向 .htaccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861469/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com