为这种URL制作漂亮的链接

时间:2014-03-31 18:43:19

标签: php .htaccess seo

大家好你们怎么建议我在漂亮的链接中做这个网址? 我尝试使用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/

THE BUTTON

    <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 个答案:

答案 0 :(得分:1)

如果您希望将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/出现在网址中,您可以使用POST发送,而不是使用GET

使用method post您必须使用表单。此示例混合使用POST和GET方法。使用GET方法发送seitename,而使用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 Introduction(参见&#34;图1&#34; in&#34; Regex Back-Reference Availability&#34;部分)

$_POST

更新2 : 您无法在.htaccess中实现该功能,因为正如我在其中一条评论中所说的那样#34;您已经无法在页面加载后重写网址#&#34} 34 ;. .htaccess不是PHP。您的网址如下http://domain.com/page1/1-Free-Cocktails!/。但是,你可以,例如,映射你的&#34; 33&#34; 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?