你有几个方法可以做到这一点,我会说,你当前的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]
通过这种方式,您可以完全忽略标题并仅从其中获取标识并使用当前脚本,同时仍向用户显示标题。
另一种方式是像你提到的,它应该是这样的:
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]
的RewriteCond需要在电子是重写规则我想每个条件的最后,非常感谢您的详细回答! – Athanatos
@Athanatos这是我的坏,这是一个错字,感谢您发现;) – Prix