繁体   English   中英

htaccess从不同页面重写URL

[英]htaccess rewrite url from different pages

我在htaccess文件中制作此文件,以便从其他页面重写网址

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.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] 

您的正则表达式模式完全相同,因此您将需要一些东西来区分页面和人物(或重定向到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中使用某些内容,并且无法通过数据库访问它,那么您将很不幸,因为您遇到了两种相同的模式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM