我在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/username
是: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]
答案 0 :(得分:1)
你的正则表达式模式匹配相同,所以你需要一些东西来区分页面和人(或重定向到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
如果您无法在网址中使用某些内容并且无法通过数据库访问它,那么您运气不好,因为您遇到了两种相同的模式。