为这种URL制作漂亮的链接


Make Pretty links for this kind of URL

嗨,伙计们,你如何建议我在漂亮的链接中做这个网址??我正在尝试使用 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>

我会感谢您的帮助!!

如果你想

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 方法。 seitename使用 GET 方法发送,而id使用 POST 方法发送。它看起来有点尴尬,但这里是:

<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 页面上,可以输出如下id 等:

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

参考:

Apache mod_rewrite简介(请参阅"正则表达式反向引用可用性"部分中的"图 1")

$_POST

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

但是,您拥有的其他选项之一是使用 JavaScript 和 AJAX。但这将是另一个问题。您可以在这里开始您的研究:

Javascript:如何在不刷新页面的情况下更改地址栏中的URL?

有没有办法在不刷新页面的情况下更改浏览器的地址栏?