Php 如何剥离url的一部分?

Php 如何剥离url的一部分?,php,apache,.htaccess,Php,Apache,.htaccess,如何剥离url的一部分?我对htaccess或apache了解不多 例如,我想将www.mysite.com/page=services剥离到www.mysite.com/services 为了实现这一点,我到底需要在.htaccess文件中放入什么内容?这对其他页面也适用吗 谢谢。我想你是说你的原始URL是www.mysite.com/index.php?page=services而不是www.mysite.com/page=services 另外,您的意思可能正好相反,您应该将www.mys

如何剥离url的一部分?我对htaccess或apache了解不多

例如,我想将
www.mysite.com/page=services
剥离到
www.mysite.com/services

为了实现这一点,我到底需要在.htaccess文件中放入什么内容?这对其他页面也适用吗


谢谢。

我想你是说你的原始URL是
www.mysite.com/index.php?page=services
而不是
www.mysite.com/page=services

另外,您的意思可能正好相反,您应该将
www.mysite.com/services
切换到
www.mysite.com/index.php?page=service

无论如何,要将
www.mysite.com/services
更改为
www.mysite.com/index.php?page=services
,您需要.htaccess,其规则是
RewriteRule^([^/]+)/?$/index.php?page=$1[L]

如前所述,您应该阅读.htaccess、regex和rewrite规则。最佳资源是以下apache文档:


我之前读过你的评论,你需要相反的,我不知道你为什么需要,因为URL缩短的整个想法是,除了一些可以解决的安全问题之外,更容易记住URL。URL是加载网页时发送的第一件东西。htaccess将其更改为PHP无法接受的形式,然后PHP处理get参数。例如。

我最近在一个网站上尝试了此方法,并提出了此方法,对我来说效果很好

这将进入.htaccess文件:

RewriteEngine On
RewriteRule ^([A-Za-z]+)/?$    index.php?page=$1    [NC,L]
然后,如果您编写yoursite.com/pagename,它会将yoursite.com/index.php?page=pagename发送到您的php。 您将像这样链接到页面:yoursite.com/pagename 发送后,它不会将地址栏中的yoursite.com/index.php?page=pagename更改为yoursite.com/pagename。(如果有意义:)


我希望这就是你想要的…

你知道正则表达式吗?您应该阅读有关mod_rewrite的内容,并确保在服务器上启用了它。我相信你的意思是你想把
/services
的一个更漂亮的URL重写成
index.php?page=services
,对吗?不,这不正确,我想反过来。我启用了mod rewrite,我知道一些正则表达式,但不知道如何从htaccess中的url中删除“page=”。可能重复我的意思是我所说的,而不是相反。为什么你认为我的意思正好相反,为什么我想把一个普通的url改成index.pgp?page=services?我想要我所问的,把www.mysite.com/page=something转到www.mysite.com/something我在我的回答中添加了一条评论,回答了你的问题。无论如何,事情是这样的。首先编写一个易于记忆的URL,例如
www.mysite.com/services
,然后.htaccess将其更改为类似以下内容
www.mysite.com/index.php?page=services
,但是,该新URL不会重新写入地址栏(除非您愿意),然后.htaccess将新的URL发送到PHP,PHP应该为您处理$\u GET参数。我不明白您在说什么。我说得很简单,但你不明白。我从数据库中动态地提取内容,所以我得到了像mysite.com/index.php?page=something这样的页面,我想把它改为mysite.com/something。我看不出你在哪里发布了答案,你发布了一些与我想要的相反的东西。简单的老虎,不需要最高级。您是否想过使用PHP而不是.htaccess,您正在从数据库中提取信息(我假设通过PHP,否则您可以使用您想要的任何语言),但在任何情况下,您所需要的只是一个字符串生成函数,它将为您实现这一点。这比。htaccess容易。我不难过,我很感谢你的帮助,但正是因为你花时间帮助我,我想得到一个好的答案。我也在动态创建页面,所以我想我确实需要htaccess。(是的,我正在使用php)。你能告诉我是否可以从url中删除'index.php?page='以及如何在.htaccess中删除吗?我不明白你说的一切,我只希望这会删除我需要删除的url的一部分:)我会在我的live server上检查一下,然后再给你回复。我真的希望这样做。我希望几小时后再与您联系。您仍然需要更改数据库中的链接,改为yoursite.com/pagename,以便用户在地址栏中看到此链接,但htaccess会将此请求重定向到yoursite.com/index.php?page=pagename,以便php知道该怎么做。(当这种情况发生在后台时,用户仍然会看到yoursite.com/pagename)我将数据库中的url更改为yoursite.com/pagename,但yoursite.com/index.php?page=pagename不是在后台发生的,它只是链接到mysite.com/pagename,而mysite.com/pagename实际上并不存在,因此它基本上保留在主页上。pagename是一个变量,它应该为每个页面动态地获取。它可以工作!我在.htaccess文件中有一些其他内容,我删除了它,并在表达式中添加了0-9(因为我也有数字),现在它可以工作了!非常感谢。