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]
让我们打破这一点。
- RewriteEngine On 是在你的.htaccess 文件中写入的第一件事。这需要每个文件只在一开始写一次。这只需将URL重写为引擎开启即可。
- RewriteRule 定义了一条新规则,任何后面的规则都被认为是URL重写规则
- ^ profile /?$ profile.php 如果你有正则表达式的经验,你必须已经知道这一点。字符串'个人资料'匹配,如果匹配,则提供文件profile.php。
由于我现在在我的本地主机上,这看起来类似于 -
您可以在上面看到,当我访问我的Web浏览器上的URL localhost / profile 时,我可以访问URL localhost / profile.php 文件。所以这就是它的工作原理。
- [NC,L] 这些实际上是表示特殊含义的标志。NC表示不区分大小写它告诉Apache忽略小写字母和大写字符。所以,即使你输入localhost / PRofiLE,你也会看到相同的结果。如果您不包含NC标志,您可能会在某些情况下收到URL未找到的错误。L 标志告诉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自己的网站可以找到更全面的指南。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spark 持久化(cache和persist的区别)
版权声明:本文由董可伦首发于https://dongkelun.com,非商业转载请注明作者及原创出处。商业转载请联系作者本人。 https://blog.csdn.net/dkl12/article/details/80742498 我的原创地址:https://dongkelun.com/2018/06/03/sparkCacheAndPersist/ 1、RDD 持久化 Spark 中一个很重要的能力是将数据持久化(或称为缓存),在多个操作间都可以访问这些持久化的数据。当持久化一个 RDD 时,每个节点的其它分区都可以使用 RDD 在内存中进行计算,在该数据上的其他 action 操作将直接使用内存中的数据。这样会让以后的 action 操作计算速度加快(通常运行速度会加速 10 倍)。缓存是迭代算法和快速的交互式使用的重要工具。 RDD 可以使用 persist() 方法或 cache() 方法进行持久化。数据将会在第一次 action 操作时进行计算,并缓存在节点的内存中。Spark 的缓存具有容错机制,如果一个缓存的 RDD 的某个分区丢失了,Spark 将按照原来的计算过...
- 下一篇
Android拼接合并图片生成长图
Android拼接合并图片生成长图 代码实现合并两张图片,以第一张图片的宽度为标准,如果被合并的第二张图片宽度和第一张不同,那么就以第一张图片的宽度为准线,对第二张图片进行缩放。 假设根目录的Pictures下已经有两张图片zhang.jpg和phil.jpg,最终把这两张图片合并成zhangphil.jpg的长图: package zhangphil.test; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.os.Bundle; import android.os.Environment; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; impor...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装