【问题标题】:Do I need to create folders for conversion in htaccess我是否需要在 htaccess 中创建用于转换的文件夹
【发布时间】:2021-05-14 21:48:23
【问题描述】:

假设我要转换:

http://localhost/profile/view?q=James 

进入

http://localhost/profile/view/James 

问题是我必须为此创建一个名为“view”的新文件夹。有没有办法让我不需要为此创建一个文件夹?这个的 htaccess 规则是什么?

【问题讨论】:

    标签: apache .htaccess web


    【解决方案1】:

    不,你没有。您在.htaccess 中使用RewriteRule。这有效地将正则表达式与您的 URL 匹配,然后按照您的说明对其进行转换(很像:preg_replace)。

    RewriteRule ^profile/view/([\w]+)/?$ path/to/profile/file.php?q=$1 [L]
    

    然后用户导航到:

    http://www.website.com/profile/view/john
    

    服务器将用户指向:

    http://www.website.com/path/to/profile/file.php?q=john
    

    【讨论】:

    • 嗨,我可以这样做:RewriteRule ^http://localhost/profile/posts/([\w]+)/?$ http://localhost/profile/posts?name=$1 [L]?
    • @AD-1 是的,有点,不是,不是。这在某种程度上取决于您要实现的目标?例如,您可以使用 RewriteCond %{HTTP_HOST} ... 获取 URL,您可以检查 http or https 是否具有类似的条件,然后使用重写。但在不知道输入和预期输出的情况下,很难准确地说出
    • 我正在尝试从localhost/profile/posts?name=john 实现类似localhost/profile/john/posts 的目标。这可能吗?附:感谢您的帮助。
    • @AD-1 你能解释一下目录结构吗? (即终点文件在哪里)
    • @AD-1 但您可能想要类似:RewriteRule ^profile/(\w+)/posts$ profile/posts.php?name=$1
    猜你喜欢
    • 2014-07-27
    • 2021-08-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    相关资源
    最近更新 更多