你有几种方法可以做到这一点,我想说,使用当前 PHP 最简单的方法是将链接更改为如下内容:
http://example.com/items/id-itemsname
http://example.com/id-username
所以一个真实的例子看起来像这样:
http://example.com/items/192-Wash-Machine
http://example.com/feedback/146-Jon-Lin
然后你可以很容易地使用这个规则来转换它:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^items/([0-9]+)-.*$ /item.php?act=view&id=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^feedback/([0-9]+)-.*$ /feedback.php?id=$1 [L]
这样,您可以完全忽略标题并从中获取 ID 并使用您当前的脚本,同时仍向用户显示标题。
另一种方式就像你提到的那样,它看起来像这样:
http://example.com/items/itemsname
http://example.com/feedback/username
然后,您需要更改 PHP 以按名称查找反馈和项目,因此它们看起来像这样:
http://example.com/item.php?act=view&name=Wash Machine
http://example.com/feedback.php?username=Jon Lin
规则是这样的:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^items/([^/]+)/?$ /item.php?act=view&name=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^feedback/([^/]+)/?$ /feedback.php?username=$1 [L]