我在 htaccess 文件中做了这个..用于从不同页面重写 url
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 [QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 [QSA]
而且效果很好..
现在我需要添加更多内容作为 facebook
你可以输入 facebook.com/用户名
这是:facebook.com/profile.php?username=
您可以输入 facebook.com/pagename
这是:facebook.com/pages.php?username=
并且工作正常
来自不同的页面..
我需要做这样的..
有什么帮助吗?!
RewriteRule ^([a-zA-Z0-9_-]+)$ profile.php?username=$1 [QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/$ profile.php?username=$1 [QSA]
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?username=$1 [QSA]
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?username=$1 [QSA]
您的正则表达式模式匹配相同,因此您将需要一些东西来区分页面和人员(或重定向到 profile.php 与 index.php)。
您可以通过以下两种方式之一来完成此操作。首先,您可以将所有内容转到一个页面,我们将其称为redirect.php。在此页面上,您可以检查 id 值,然后重定向。所以就像:
RewriteRule ^([a-zA-Z0-9_-]+)/?$ redirect.php?id=$1
在redirect.php中,你抓住$_GET['id']
并对其运行一些查询以确定它是页面还是人,然后使用以下内容进行重定向:
header("Location: profile.php?username=".$_GET['id']);
如果您严格寻找 Facebook 相关内容,您可以使用图形 API 而不是数据库来确定它是页面还是个人 ID。 (不确定它是否可以同时存在于两者中 - 但我认为不能)。
如果您没有数据库或数据源来确定它是页面还是个人,那么您需要在 URL 字符串中添加一些内容来确定,例如 /pages/{pageid},然后您可以重写您的规则到:
RewriteRule pages/([a-zA-Z0-9_-]+)/?$ index.php?username=$1 # for pages
RewriteRule ^([a-zA-Z0-9_-]+)/?$ profile.php?username=$1 # for people
如果您无法在 URL 中使用某些内容,并且无法通过数据库访问它,那么您就不走运了,因为您遇到了两个相同的模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)