比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

URL重写教程与.htaccess

URL重写教程与.htaccess

互联网似乎是一个美丽的地方。不是吗?

对于我们自己的网站,URL http://www.bieryun.com/page/2将带您进入文章的互联网类别的第二页。尽管看起来很简单,但这并不适用。原始网址可能类似于http://www.bieryun.com/blog.php?category=internet&page=2

但是这样的网址实际上不方便记忆,因此我们使用前面提到的网址。因此,在本文中,让我们了解如何使用apache的mod_rewrite a2enmod 创建漂亮的URL ,就像调用它一样。

在我们开始之前,我假设你知道apache服务器是什么,并且已经使用PHP等服务器脚本语言在网站上工作。

所以我们将在apache上使用URL重写模块。它应该默认启用。如果不是,你可以删除读取行前面的#号

LoadModule rewrite_module modules / mod_rewrite.so

来自位于xampp / apache / conf中httpd.conf 文件  

对于Linux系统,以下命令将启用它 –

sudo a2enmod rewrite

在这之后,重新启动你的apache服务器。

现在我们需要创建一个名为.htaccess 的文件来完成我们的URL重写工作。因此,只需创建一个名为.htaccess 的文件并保存在根目录中即可。

你可以看到我有一个.htaccess 文件和一些其他的PHP文件。 现在让我们打开.htaccess文件并编写一个简单的重写规则。

因此,让我们假设您有一个配置文件页面,目前情况是这样的:当有人访问配置文件页面时,他们实际上访问了名为profile.php 的文件 ,URL栏显示URL为www.websitename.com/profile.php 

为了让它在眼睛上更容易一些,如果我们可以删除.php扩展名会更好。要做到这一点,我们会写出这样的规则。

RewriteEngine On

RewriteRule    ^profile/?$  profile.php [NC, L]

让我们打破这一点。

  1. RewriteEngine On 是在你的.htaccess 文件中写入的第一件事。这需要每个文件只在一开始写一次。这只需将URL重写为引擎开启即可。
  2. RewriteRule 定义了一条新规则,任何后面的规则都被认为是URL重写规则
  3. ^ profile /?$ profile.php 如果你有正则表达式的经验,你必须已经知道这一点。字符串’个人资料’匹配,如果匹配,则提供文件profile.php。

由于我现在在我的本地主机上,这看起来类似于 –

您可以在上面看到,当我访问我的Web浏览器上的URL localhost / profile 时,我可以访问URL localhost / profile.php 文件。所以这就是它的工作原理。

  1. [NC,L] 这些实际上是表示特殊含义的标志。NC表示不区分大小写它告诉Apache忽略小写字母和大写字符。所以,即使你输入localhost / PRofiLE,你也会看到相同的结果。如果您不包含NC标志,您可能会在某些情况下收到URL未找到的错误。标志告诉Apache,这是最后一次检查。如果这是匹配的,则不需要检查其他RewriteRule。

所以这是一个URL重写的简单例子。现在让我们说你想通过GET方法传递参数。访问某人的个人资料页面的简单获取方法URL就是

localhost/profile.php?username=john

当重写这个URL时,如果我们可以将它转换成真的很酷

localhost/profile/john

这将更容易记住,也更清洁。为了实现这一点,我们需要以get变量的形式将username参数传递给配置文件页面。

RewriteRule    ^profile/([A-Za-z0-9-]+)/?$ profile.php?username=$1

语法与我们之前做过的类似,但是您可以注意到我们已经在这里通过了username参数。

([A-Za-z0-9 – ] +)意味着该字符集中的任何字符都将被接受。

profile.php?username = $ 1 意味着profile.php页面将被提供并且一个名为username的GET变量将被传递,这将在profile / 后面输入

您可以看到get变量传递给用于显示输出的配置文件页面。

如果您想要传递更多变量,假设您想要一个类似于的URL

产品/食品/ 2

您可以使用以下Rewriterule

RewriteRule    ^profile/([A-Za-z-]+)/([0-9-]+)/?$    products.php?category=?$1&page=$2

你可以看到我们添加了正斜杠和后来的另一个字符集条件。您可以在规则的右侧看到URL使用$ 1和$ 2作为GET变量,这些变量的设置优先于它们在重写URL中的外观。同样,您可以使用$ 3,$ 4等。

结论

所以我们讨论了URL重写并学习了一些技巧。这只是一个让你开始的基本教程。从apache自己的网站可以找到更全面的指南。

未经允许不得转载:阿里云代金券 » URL重写教程与.htaccess

相关推荐

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS