在mod_rewrite之后调整链接

时间:2013-08-30 19:39:26

标签: php regex apache .htaccess mod-rewrite

在Stack Overflow的某些人的帮助下,我设法更改了我的链接,以便他们更加用户和搜索引擎友好。此网址http://www.showcase.zz.mu/oferta.php?tip=Club&nume=Goblin&localitate=Bucuresti&judet=Bucuresti&id=52138700c4d7c已更改为此网址http://showcase.zz.mu/oferta/Club-Goblin-Bucuresti-Bucuresti-52138700c4d7c.php。如果我尝试手动访问新URL,它将按预期工作。但是,在我的搜索页面上,生成的链接仍然是旧链接,并且在访问动态生成的页面时URL保持不变。

这是我的.htacess内容:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteRule ^oferta/([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)\.php$ /oferta.php?tip=$1&nume=$2&localitate=$3&judet=$4&id=$5 [NC,L,QSA]

这是在PHP中生成链接的代码:

echo "<a href='oferta.php?tip={$result['tip_locatie']}&nume={$result['denumire_locatie']}&localitate={$result['localitate']}&judet={$result['judet']}&id={$result['id_oferta']}'><p style='margin-top: -5px;'>View page</p></a>";

如果你想知道$ result是什么:

$result = mysql_fetch_array( $resulta )
$resulta = mysql_query($query)

如果您需要了解更多内容,请告知我们。在降级之前让我知道,以便我可以编辑我的问题。谢谢!

1 个答案:

答案 0 :(得分:1)

您需要一个额外的规则,用于从旧网址到新网址的外部重定向。你的代码是这样的:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+oferta\.php\?tip=([^&]*)&nume=([^&]*)&localitate=([^&]*)&judet=([^&]*)&id=([^\s&]*) [NC]
RewriteRule ^ /oferta/%1-%2-%3-%4-%5.php? [R=301,L]

RewriteRule ^oferta/([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)\.php$ /oferta.php?tip=$1&nume=$2&localitate=$3&judet=$4&id=$5 [NC,L,QSA]