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

制作此类URL的漂亮链接

  •  1
  • Deimos  · 技术社区  · 12 年前

    嗨,伙计们,你们怎么推荐我在漂亮的链接中使用这个网址?? 我正在尝试htaccess,但我没有找到好的解决方案。。。

    domain.com/?seite=page1&?id=33&name=1-Free-Cocktails!
    
    for example:
    
    www.domain.com/page1/1-Free-Cocktails!/
    

    我有这个密码

    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    
    RewriteRule    ^page1/([0-9]+)/?$   /?seite=page=$1    [NC,L]    # Handle product requests
    RewriteRule    ^page1/  /?seite=page[NC,L]    # Handle product requests
    

    输出,输出

    www.domain.com/page1/
    

    按钮

        <div class="pull-right kaufen">
    <a  href="/?seite=page1&amp;id=<?php echo $item['id'];?>&amp;name=<?php echo $product->prettyLinks($name);?>" class="btn btn-success">Info Anzeigen!</a></div>
    

    我会感激你的帮助!!

    1 回复  |  直到 12 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    如果你愿意 domain.com/page1/33/1-Free-Cocktails!/ 转化为 http://domain.com/index.php?seite=page1&?id=33&name=1-Free-Cocktails!

    .htaccess 文件到 domain.com/.htaccess

    的内容 .htaccess 文件应为:

    RewriteEngine On
    RewriteRule ^([a-z\0-9]+)/([0-9]+)/([A-Z\a-z\0-9\-\_]+)/$ /index.php?seite=$1&?id=$2&name=$3 [L]
    

    如果您不需要 33/ 。那就是 http://domain.com/page1/1-Free-Cocktails!/ 转换为 http://domain.com/index.php?seite=page1&name=1-Free-Cocktails! 然后 .htaccess 如下所示:

    RewriteEngine On
    RewriteRule ^([a-z\0-9]+)/([A-Z\a-z\0-9\-\_]+)/$ /index.php?seite=$1&name=$2 [L]
    

    更新: 顺便说一下,如果你不想 33/ 显示在URL中您可以使用 POST 与使用 GET .

    使用 method post 你必须使用表单。此示例混合了POST和GET方法。 seite name 使用GET方法发送,而 id 使用 柱,柱 方法它看起来有点尴尬,但这里是:

    <div class="pull-right kaufen">
    <form action="index.php?seite=page1&name=<?php echo $product->prettyLinks($name);?>" method="post">
    <input type="hidden" value="<?php echo $item['id'];?>" name="id" />
    <input type="submit" value="Submit">
    </form>
    </div>
    

    然后在接收数据的PHP页面上 身份证件 等等可以如下输出:

    <?php
    echo htmlspecialchars($_POST["id"]);
    echo htmlspecialchars($_GET["seite"]);
    echo htmlspecialchars($_GET["name"]);
    ?>
    

    参考:

    Apache mod_rewrite Introduction (请参阅“Regex备份参考可用性”一节中的“图1”)

    $_POST

    更新2 : 你将无法在 .htaccess ,因为正如我在一条评论中所说的“加载页面后,您将无法重写URL”。 .htaccess 不是PHP。您的URL如下 http://domain.com/page1/1-Free-Cocktails!/ 。但是,例如,您可以将您的“33”id映射到某个预定义的名称,并将其显示在 <title><?php echo $_POST["id"];?></title> 标签

    然而,您可以选择使用JavaScript和AJAX。但这将是另一个问题。您可以在这里开始您的研究:

    Javascript: How do I change the URL in the address bar without refreshing the page?

    Is there a way to change the browser's address bar without refreshing the page?

    推荐文章