.htaccess从长链接修改为随机链接

时间:2016-08-23 05:57:39

标签: php .htaccess mod-rewrite

我试图将我的网站链接看起来像website.com/gH25ih而不是website.com/link/index.php?id=1。所以我现在尝试的是这个

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteRule ^link/index/([0-9]*)/([a-zA-Z0-9\-\_])*$ link/index.php?id=$1

但它只是从website.com/link/index.php?id=1更改为website.com/link/index/1/name

2 个答案:

答案 0 :(得分:0)

这不是你的规则如何设计工作。在重写中你有2个规则但只有1个变量$1 - 随机字符串需要是指向db记录的指针(在大多数情况下),但你有一个数字id。

RewriteRule ^([a-zA-Z0-9\-\_]+)$ link/index.php?id=$1 [NC,L]

应该允许website.com/gH25ih之类的链接,但前提是gH25ih与您尝试检索的资源有某种关联

答案 1 :(得分:0)

您需要维护随机网址到真实网址的映射,但以下重写可行:

RewriteCond %{REQUEST_FILENAME} ! -f
RewriteCond %{REQUEST_FILENAME} ! -d
RewriteRule ^(.*)$ /link/index.php?id=$1 [L]

索引php脚本会查找给定的随机字符。

作为旁注:为什么模糊URL而不是从ID迁移到带有标题的更具语义/更好的URL?