怎么开启laravel的重写laravel5 .htaccesss文件看不懂

温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
有理想,有抱负,但有点小懒。
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
一:本文旨在提供怎么用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的&实例给用户一些使用重写规则的基本方法和线索。&二:为什么需要用重写规则?&一个网站,如果是长期需要放在internet上提供服务,必定会有不断地更新和维护,如临&时转移到其他服务器进行维护,重新组织目录结构,变换URL甚至改动到新的等等,&而为了让客户不会因此受到所有影响,最佳的方法就是使用Apache Rewrite Rule(重写&规则)。&三: 重写规则的作用范围&1) 能使用在Apache主设置文件httpd.conf中&2) 能使用在httpd.conf里定义的设置中&3) 能使用在基本目录的跨越设置文件.htaccess中&四:重写规则的应用条件&只有当用户的WEB请求最终被导向到某台WEB服务器的Apache后台,则这台WEB服务器接受&进来的请求,根据设置文件该请求是主设置还是,再根据用户在浏览器中请求的&URI来配对重写规则并且根据实际的请求路径配对.htaccess中的重写规则。最后把请求&的内容传回给用户,该响应可能有两种:&1) 对浏览器请求内容的外部重定向(Redirect)到另一个URL。&让浏览器再次以新的URI发出请求(R=301或R=302,临时的或是永久的重定向)&如:一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,或网站改换&成了新的&则把旧的重定向到新的(Redirect)&2) 也可能是由Apache内部子请求代理产生新的内容送回给客户[P,L]&这是Apache内部根据重写后的URI内部通过代理模块请求内容并送回内容给客户,而客户&端浏览器并&不知道,浏览器中的URI不会被重写。但实际内容被Apache根据重写规则后的URI得到。&如:在公司防火墙上运行的Apache启动这种代理重写规则,代理对内部网段上的WEB服务&器的请求。五:重写规则怎样工作?&我们假定在编译Apache时已把mod_rewrite编译成模块,确信你的httpd.conf中有&LoadModule rewrite_module libexec/mod_rewrite.so&并且在Addmodule中有&Addmodule mod_rewrite.c&则能使用重写规则。&当外部请求来到Apache,Apache调用重写规则中的定义来重写由用户浏览器指定请求的&URI,最后被重写的URI如果是重定向,则送由浏览器作再一次请求;如果是代理则把重写&后的URI交给代理模块请求最终的内容(Content),最后把内容送回给浏览器。&六: 何时使用.htaccess中的重写规则定义?&如果你对你的的网站内容所在的服务器没有管理员权限,或你的网站放在ISP的服务器&上托管等等条件下,你无法改写主设置文件,然而你能对你的WEB站点内容所在的目录&有写权限,则你能设置自己的.htaccess&文件达到同样的目的。但你需要确定主设置文件中对你的网站所在的目录定义了下面的内&容:&Options Indexes FollowSymLinks&AllowOverride all&否则你的.htaccess不会工作。&七: 应用举例&假定Apache被编译安装在主机192.168.1.56的/usr/local/apache/ 目录下面,我们编&译进了重写和代理模块。&1) 隐藏Apache下的某个目录,使得对该目录的所有请求都重定向到另一个文件。&a& httpd.conf的实现方法&我们放下面的部分到/usr/local/apache/conf/httpd.conf&options Indexes followsymlinks&allowoverride all&rewriteengine on&rewritebase /&rewriterule ^(.*)$ index.html.en [R=301]&注:rewriteengine on 为重写引擎开关,如果设为off,则所有重写规则定义将不被应&用,该开关的另一好处就是如果为了临时拿掉重写规则,则改为off再重启动Apache即&可,不必将下面一条条的重写规则注释掉。&rewritebase / 的作用是如果在下面的rewriterule定义中被重写后的部分(此处为文件&名index.html.en)前面没有/,则是相对目录,相对于这个rewritebase后面的定义也就&是/usr/local/apache/htdocs/index.html.en,否则,如果此处没有rewritebase /这&一项,则被重写成&http://192.168.1.56/usr/local/apache/htdocs/manual/index.html.en ,显然是&不正确的。&不过这里我们也能不用rewritebase / , 而改为&rewriteengine on&rewriterule ^(.*)$ /index.html.en [R=301]&或&rewriteengine on&rewriterule ^(.*)$ http://192.168.1.56/index.html.en [R=301]&b& .htaccess的实现方法&我们先放下面的部分到httpd.conf&options Indexes followsymlinks&allowoverride all&然后放下面的部分到/usr/local/apache/htdocs/manual/.htaccess中&rewriteengine on&rewritebase /&rewriterule ^(.*)$ index.html.en [R=301]&注:对文件.htaccess所作的所有改动不必重启动Apache.&问:要是把这个manual目录重定向到用户jephe的自己的主目录呢?&用下面的.htaccess方案。&rewriteengine on&rewritebase /~jephe/&rewriterule ^(.*)$ $1 [R=301]&则对manual目录下所有文件的请求被重定向到~jephe目录下相同文件的请求。&2) 转换www.的对于username的主页请求为&/username&对于HTTP/1.1的请求包括一个Host: HTTP头,我们能用下面的规则集重写&http://www./anypath 到 /home/username/anypath&Rewriteengine on&rewritecond %{HTTP_HOST} ^www\.[^.]+\.host\.com$&rewriterule ^(.+) %{HTTP_HOST}$1 [C]&rewriterule ^www\.([^.]+)\.host\.com(.*) /home/$1$2&注:&rewritecond 条件重写规则,当满足后面定义的条件后才会应用下面的重写规则,&rewritecond有各种变量&,请查阅相关文件。&3) 防火墙上的重写规则代理内部网段上服务器的请求。&NameVirtualhost 1.2.3.4&servername &rewriteengine on&proxyrequest on&rewriterule ^/(.*)$ http://192.168.1.3/$1 [P,L]&注:当外部浏览器请求时被解析到IP地址1.2.3.4 ,Apache 交出&mod_rewrite处理转换成&http://192.168.1.3/$1后再交由代理模块mod_proxy得到内容后传送回用户的浏览器。&4) 基本预先设定的转换MAP表进行重写 rewritemap&转换/{countrycode}/anypath 到Map表中规定的URI,上面是&中的定义&rewritelog /usr/local/apache/logs/rewrite.log&rewriteloglevel 9&rewriteengine on&proxyrequest on&rewritemap sitemap txt:/usr/local/apache/conf/rewrite.map&rewriterule ^/([^/]+)+/(.*)$ http://%{REMOTE_HOST}::$1 [C]&rewriterule (.*)::([a-z]+)$ ${sitemap:$2|http://h.i.j.k
阅读(983)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'【转】Apache的重写(.htaccess文件的使用)',
blogAbstract:'\t&转自:/ybbqg/archive//2405500.html&一:本文旨在提供怎么用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的&',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'有理想,有抱负,但有点小懒。',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}网页设计教程与开发
提供各种常见网页效果
提供各种各样的设计教程
装扮QQ,让QQ变得更酷
设计参考,提高自升水平
学习服务器和操作系统
提供各种素材和工具
收藏学习资料
您现在的位置:&&>>&&>>&&>>&正文
.htaccess重定向和url重写的几个例子
&.htaccess是apache虚拟目录中一个可以用来代替apache中conf中的一些功能了,像重定向和url重写或安全配置都可以利用它来完在下面来看看一些关于.htaccess例子。
# 这是注释
# 指定默认首页查找顺序
DirectoryIndex index.htm .index.php
#自定义404页面
ErrorDocument 404 /error/404.html
#比较下面2句: 默认是302,用户访问的是abc,但实际显示的是def页面,地址栏也还是显示abc
redirect /abc /def
#redirect 301 /abc /def
RewriteEngine on
RewiteBase /
#访问old.html实则显示的是index.php ,而地址栏依旧显示old.html,对比后面带中括号[]写法区别
RewriteRule ^old.html$ index.php
#RewriteRule ^old.html$ /index.php [r=301]
#访问index.php需要验证账号密码,如果是进入目录要验证,只须去掉&Files&标签并把.htaccess文件放入对应目录既可
&Files &index.php&&
AuthName &Username and passwordsss required&
# .htpasswd即验证账号密码保存文件,名称可自定义,但路径必须是绝对路径,否则会报500 internal server error错误
AuthUserFile D:/Kuaipan/.htpasswd
Require valid-user
AuthType Basic
赞助商链接
#访问111cn.net跳转至www.111cn.net
RewriteEngine On
RewriteCond %{HTTP_HOST} ^111cn.net [NC]
RewriteRule ^(.*)$ http://www.111cn.net/$1 [L,R=301]
#图片防盗链:站外引用,直接跳转到
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.111cn.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.111cn.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://111cn.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://111cn.net$ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|js|css|swf)$
htaccess加强网站的安全设置
用.htaccess 自定义错误页的方法
系统默认的错误页面太丑啦, 自己设计一个吧, 可以是php等动态文件格式的哦.
通过在.htaccess文件里加入下面的文字将其变成自定义页面:
ErrorDocument 404 /err/404.php
ErrorDocument 503 /err/503.php
不管是404/403/400/503等其它错误都可以自己设计指定一个页面哦.
用.htaccess禁止显示目录列表
有些时候,你的目录里没有默认的index文件,当有人在浏览器地址栏访问该目录,目录下所有的文件都会显示出来,这会给你的网站留下安全隐患。
为避免这种情况(而不必创建一堆的新index文件),你可以在你的.htaccess加入下面的代码来阻止目录列表的显示:
Options -Indexes
用.htaccess阻止特定的IP地址
想允许某些特定IP的用户可以访问你的网站(例如:只允许使用特定ISP的用户进入某个目录),或者想封禁某些特定的IP地址(例如:将低级用户隔离于你的信息版面外)。
现在网上的大多数用户都使用动态IP地址,这个方法一般很少用。
使用以下命令封禁一个IP地址:
deny from 127.0.0.10
这里的127.0.0.10是被封禁的IP地址
如果封禁整个网段的地址, 可以这样写
deny from 210.10.56.
则将封禁210.10.56.0~210.10.56.255的所有IP地址。
用.htaccess只允许某个IP地址访问网站:
allow from 127.0.0.10
当然也可以想上面一样运行一个ip段访问.
用.htaccess阻止所有人访问目录
deny from all
这个命令并不影响脚本程序使用这个目录下的文档。
用.htaccess 替换默认的首页index文件
如果想更改默认的首页文件(index.htm等)。使用.htaccess可以指定任何的页面作为默认的首页!
下面的代码设置 index.php / index.php3 / messagebrd.pl / index.html / index.htm同时指定了这些页面为默认的首页, 从左到右, 如果存在就访问.
DirectoryIndex index.php index.php3 messagebrd.pl index.html index.htm
利用.htaccess重定向
重定向文件的例子:
Redirect /location/from/root/file.html /new/file/2.html
haccess重定向整个网站的目录
假如你的网站上有一个名为 /olddirectory 的目录,并且你已经 新建了一个 /newdirectory 文档,你可以将旧目录下所有的文件做一次重定向而不必一一声明:
Redirect /olddirectory /newdirectory
利用.htaccess 保护密码
.htaccess具有完美的安全性(即访问者必须知晓密码才可以访问目录,并且绝无&后门&可走)。
1. 密码保护的.htaccess文件
利用.htaccess将一个目录加上密码保护分两个步骤。
在你的.htaccess文档里加上几行代码,再将.htaccess文档放进你要保护的目录下:
AuthName &Section Name&
AuthType Basic
AuthUserFile /full/path/to/.htpasswd
Require valid-user
根据你的网站情况修改上述内容,如用被保护部分的名字&Section Name&。/full/parth/to/.htpasswd则应该替换为指向.htpasswd文件(后面详述该文档)的完整服务器路径。如果你不知道你网站空间的完整路径,请询问一下你的系统管理员。
2. 密码保护的.htpasswd文件
目录的密码保护比.htaccess的其他功能要麻烦些,因为你必须同时创建一个包含用户名和密码的文档,用于访问你的网站,相关信息(默认)位于一个名为.htpasswd的文档里。像.htaccess一样,.htpasswd也是一个没有文件名且具有8位扩展名的文档,可以放置在你网站里的任何地方(此时密码应加密),但建议你将其保存在网站Web根目录外,这样通过网络就无法访问到它了。
3. 输入用户名和密码
创建好.htpasswd文档后(可以通过文字编辑器创建),下一步是输入用于访问网站的用户名和密码,应为:
username:password
&password&的位置应该是加密过的密码。你可以通过几种方法来得到加密过的密码:一是使用一个网上提供的permade脚本或自己写一个;另一个很不错的username/password加密服务是通过KxS网站,这里允许你输入用户名及密码,然后生成正确格式的密码。
对于多用户,你只需要在.htpasswd文档中新增同样格式的一行即可。另外还有一些免费的脚本程序可以方便地管理.htpasswd文档,可以自动新增/移除用户等。
4. 访问网站
当你试图访问被.htaccess密码保护的目录时,你的浏览器会弹出标准的username/password对话窗口。如果你不喜欢这种方式,有些脚本程序可以允许你在页面内嵌入username/password输入框来进行认证,你也可以在浏览器的URL框内以以下方式输入用户名和密码(未加密的):
http://username:password@/directory/
转载请注明:破洛洛(谢谢合作)
上一篇文章: 下一篇文章:
网友评论:你是否曾经对一些网站的网址看起来非常清爽,没有任何.php或.html后缀感到奇怪?他们就是这样做到的。
1、安装 mod_rewrite 模块&&&& 因为 Apache 服务器默认是没有打开 mod_rewrite 模块的,所以我们必须手动来启动。打开 Apache 的配置文件 httpd.conf 文件,找到下面一行:&&&& #LoadModule rewrite_module modules/mod_rewrite.so&&&& 前面的 # 号是 Apache 配置文件的注释符,也就是 Apache 服务器没有加载该模块。将前面的 # 号去掉,保存后重启 Apache 服务器,这是我们就实现了加载 mod_rewrite 这个模块了。(提示:任何一次对 Apache 的配置文件 httpd.conf 文件都是要重新启动 Apache 才能生效的)&&&& 2、新建 .htaccess&文件&&&& 在 windows 系统默认的情况下是不能新建没有文件名的文件的,这里建议大家使用 vim 这个编辑器来新建。方法是打开 vim 编辑器随便输入一段文字,然后保存为 .htaccess 即可。很多朋友因为习惯了 windows 系统,所以新建这个文件很头疼。还有就是文件名一定不要错,我今天写的时候把文件保存成了.htacess,看到没有,少了一个c,怎么调试都不对,还好最后发现了这个低级错误。
&&&& 3、配置 .htaccess 文件&&&& .htaccess 文件务必放在你项目的根目录下,不要放在其他文件夹下。配置 .htaccess 文件的格式如下:&&&&&&ifmodule mod_rewrite.c&&&& &RewriteEngine On&&& &#这里是你的规则&&& &&/ifmodule&&&&&&解释:RewriteEngine On :启动URL重写引擎&&&& 先看如下一个配置好了的 .htaccess 文件实例:  &ifmodule mod_rewrite.c&&&&   RewriteEngine On&&&   RewriteRule ^index\.html$ /index.php [L]&&&   RewriteRule ^shop/(.+)/$ shop/shop.php?providerId=$1 [L]   &/ifmodule&
&&&&分析:上面 .htaccess 文件就写了二条规则。当在浏览器中输入 index.html 时,后台调用的是 index.php 文件。符号&^&是以后面的字符开头,相信熟悉正则表达式的朋友不会陌生吧,符号&$&是以前面的字符结尾。符号L表示停止处理接下来的规则。最后一条当我们在浏览器中输入&shop/2322 时,后台调用 shop.php文件并传递参数provider=2322 。&&& 配置规则,大家照着那一条去写吧,记得每行后面加个 L 符号。
再写一个:
  RewriteRule& ^category/([0-9]+)$& category.php?id=$1
如果有多页的文章 如: 重写成
  RewriteRule ^category/([0-9]+)/([0-9]+)$& category.php?id=$1&page=$2
如果你想升级你的站点,又要保证老的链接都可用,你也可以通过mod_rewrite模块来实现。你仅仅需要写一个规则之处这个网页被永久的移动了。例子如下:
  RewriteRule ^oldpage.html$ newpage.html [R=301]
记录下来,以后还会用到。
阅读(...) 评论()匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 laravel 看不懂 的文章

 

随机推荐