nginx配置伪静态
- 格式:docx
- 大小:14.72 KB
- 文档页数:1
.htaccess实现伪静态方法(注:本文由一九八网络科技V客学院PHP工程师原创,转载请注明出处,谢谢!)PHP静态化,分为真静态与伪静态。
真静态就是把静态化的内容写入到服务上,在服务器上是可以看到静态化页面的。
而伪静态方法只是在把url处理了一下,而没有生成真正的静态而面在服务器。
两种方法各有优势。
今天我重点在这里讲一讲伪静态方法。
下面介绍一下伪静态方法生成的三个步骤:第一:要配置服务器的重写模块1、打开Apache 的配置文件httpd.conf文件2、将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉。
3、保存后重启Apache第二:编写test.php文件用于举例说明<?php$news_id=$_GET["news_id"];echo $news_id=?>//功能就是接受URL里的id参数,并在页面显示。
第三:.htaccess文件的编写与保存1、用记事本那一个空白文件后缀用.htaccess命名,不要文件名。
2、.htaccess的文件内容如下:.<IFMODULE mod_rewrite.c>.RewriteEngine On.RewriteBase /.RewriteRule ^t_(.*).html$ test.php?news_id=$1 [L].</IFMODULE>2.1、^t_(.*).html$ 描述你输入的URL地址,test.php?news_id=$1 其实际要访问的地址2.2、例如当您在浏览器中输入(假设您的test.php和.htaccess文件都在您服务器的mytest文件夹下)localhost/mytest/t_1.html 则在浏览器中将输出1,实际访问的地址是:localhost/mytest/test.php?news_id=12.3、如果输入为localhost/mytest/t_sophp.html 则浏览器输出sophp实际访问的地址是:localhost/mytest/test.php?news_id=sophp在实际的开发过程中,掌握好这三个步骤就可以解决伪静态方法,项目开发过程中可用这个通用的思路进行开发。
react nginx伪静态规则(一)react nginx伪静态规则概念:react nginx伪静态规则是指在Nginx服务器上通过正则表达式匹配动态URL,将其转换为静态HTML文件,从而提高网站性能和SEO排名的技术。
React 是一种前端JavaScript库,可以用于构建用户界面,而Nginx是一款高性能的反向代理服务器,用于处理HTTP请求和响应。
(二)react nginx伪静态规则特点:1.提高网站性能:通过将动态URL转换为静态HTML文件,避免了频繁地查询数据库和渲染页面,从而提高了网站的响应速度和负载能力。
2.提高SEO排名:静态HTML文件更容易被搜索引擎收录,且具有更好的索引性和抓取效率,有助于提高网站的SEO排名。
3.灵活可控:react nginx伪静态规则可以根据实际需求进行定制,支持多种匹配模式和重写规则,满足不同场景下的需求。
4.安全性:通过Nginx 的防盗链、缓存控制等功能,可以有效保障网站的安全性和稳定性。
(三)react nginx伪静态规则使用方法:1.安装Nginx:在服务器上安装Nginx,确保其已经配置好监听端口和代理规则。
2.创建React项目:使用CreateReact App等工具创建React项目,并将其部署到服务器上。
3.配置Nginx伪静态规则:在Nginx配置文件中,编写匹配规则和重写规则,将动态URL转换为静态HTML文件。
4.测试验证:通过访问网站首页和动态页面,检查Nginx是否正确地将动态URL转换为静态HTML文件。
需要注意的是,在实际应用中,根据不同场景和需求,可以根据react nginx 伪静态规则进行定制和优化。
同时,为了保证网站的安全性和稳定性,还需要关注Nginx 的其他配置,如防盗链、缓存控制等。
nginxlocation配置详细解释-------------------- 写在这是⽅便⼤家找的安装配置三部曲:点击即可查看---------------------server_name _; #不启⽤域名指令-热启动Nginx重新读取配置的命令nginx -s reload看⽂档的⽅法gzip压缩⽂件模块的使⽤:参考:nginx官⽅⽂档-》Modules reference-》语法详解语法规则:location [=|~|~*|^~] /uri/ { … }=开头表⽰精确匹配^~开头表⽰uri以某个常规字符串开头,理解为匹配 url路径即可。
nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
以xx 开头~开头表⽰区分⼤⼩写的正则匹配以xx结尾~*开头表⽰不区分⼤⼩写的正则匹配以xx结尾!~和!~*分别为区分⼤⼩写不匹配及不区分⼤⼩写不匹配的正则/通⽤匹配,任何请求都会匹配到。
多个location配置的情况下匹配顺序为(参考资料⽽来,还未实际验证,试试就知道了,不必拘泥,仅供参考):⾸先精确匹配 =-》其次以xx开头匹配^~-》然后是按⽂件中顺序的正则匹配-》最后是交给 / 通⽤匹配。
当有匹配成功时候,停⽌匹配,按当前匹配规则处理请求。
例⼦,有如下匹配规则:location = / {#规则A}location = /login {#规则B}location ^~ /static/ {#规则C}location ~ \.(gif|jpg|png|js|css)$ {#规则D,注意:是根据括号内的⼤⼩写进⾏匹配。
括号内全是⼩写,只匹配⼩写}location ~* \.png$ {#规则E}location !~ \.xhtml$ {#规则F}location !~* \.xhtml$ {#规则G}location / {#规则H}那么产⽣的效果如下:访问根⽬录/,⽐如http://localhost/ 将匹配规则A访问 http://localhost/login将匹配规则B,http://localhost/register 则匹配规则H访问 http://localhost/static/a.html 将匹配规则C访问 http://localhost/a.gif, http://localhost/b.jpg将匹配规则D和规则E,但是规则D顺序优先,规则E不起作⽤,⽽ http://localhost/static/c.png 则优先匹配到规则C访问 http://localhost/a.PNG则匹配规则E,⽽不会匹配规则D,因为规则E不区分⼤⼩写。
nginx 伪静态排除路径Nginx是一款高性能的HTTP服务器和反向代理服务器,常被用于搭建静态网站。
伪静态是指通过URL重写技术将动态网页的URL伪装成静态网页的URL,以提高网站的访问速度和搜索引擎友好度。
在Nginx中,我们可以通过配置文件来实现伪静态,并且可以排除某些路径,使其不受伪静态的影响。
我们需要在Nginx的配置文件中添加一段代码来实现伪静态。
在配置文件中,我们可以通过location指令来指定要伪静态的路径,并使用rewrite指令来进行URL的重写。
可以像下面这样配置:```location / {if (!-e $request_filename) {rewrite ^/(.*)$ /index.php/$1 last;}}```上述配置中的location指令表示对根路径下的所有请求进行处理。
其中,if指令用于判断请求的文件是否存在,如果不存在,则执行rewrite指令进行URL重写。
rewrite指令中的正则表达式^(.*)$表示匹配任意字符,/index.php/$1表示将匹配到的字符作为参数传递给index.php文件。
接下来,我们可以根据需要排除某些路径,使其不受伪静态的影响。
在Nginx的配置文件中,我们可以使用location指令来实现路径的排除。
可以像下面这样配置:```location /admin/ {# 这里是排除的路径,不进行伪静态# 可以在这里配置其他相关的处理逻辑}```上述配置中的location指令表示对/admin/路径下的所有请求进行处理。
在这里,我们可以配置其他相关的处理逻辑,比如反向代理、缓存等。
除了使用location指令排除路径外,我们还可以使用if指令来排除路径。
可以像下面这样配置:```if ($request_uri ~* "/upload/") {# 这里是排除的路径,不进行伪静态# 可以在这里配置其他相关的处理逻辑}```上述配置中的if指令表示对请求的URI进行匹配,如果匹配到/upload/路径,则不进行伪静态。
正则表达式匹配,其中:1. * ~ 为区分大小写匹配2. * ~* 为不区分大小写匹配3. * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配,其中:1. * -f和!-f用来判断是否存在文件2. * -d和!-d用来判断是否存在目录3. * -e和!-e用来判断是否存在文件或目录4. * -x和!-x用来判断文件是否可执行flag标记有:1. * last 相当于Apache里的[L]标记,表示完成rewrite2. * break 终止匹配, 不再匹配后面的规则3. * redirect 返回302临时重定向地址栏会显示跳转后的地址4. * permanent 返回301永久重定向地址栏会显示跳转后的地址一些可用的全局变量有,可以用做条件判断(待补全)1. $args2. $content_length3. $content_type4. $document_root5. $document_uri6. $host7. $http_user_agent8. $http_cookie9. $limit_rate10. $request_body_file11. $request_method12. $remote_addr13. $remote_port14. $remote_user15. $request_filename16. $request_uri17. $query_string18. $scheme19. $server_protocol20. $server_addr21. $server_name22. $server_port23. $uri结合QeePHP的例子1. if (!-d $request_filename) {2. rewrite^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1 &action=$2&$3 last;3. rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;4. break;多目录转成参数/sort/2 => /index.php?act=sort&name=abc&id=21. if ($host ~* (.*)/.domain/.com) {2. set $sub_name $1;3. rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;4. }目录对换/123456/xxxx -> /xxxx?id=1234561. rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:1. if ($http_user_agent ~ MSIE) {2. rewrite ^(.*)$ /nginx-ie/$1 break;3. }目录自动加“/”1. if (-d $request_filename){2. rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;3. }禁止htaccess1. location ~//.ht {2. deny all;3. }禁止多个目录1. location ~ ^/(cron|templates)/ {2. deny all;3. break;4. }禁止以/data开头的文件可以禁止/data/下多级目录下.log.txt等请求;1. location ~ ^/data {2. deny all;3. }禁止单个目录不能禁止.log.txt能请求1. location /searchword/cron/ {2. deny all;3. }禁止单个文件1. location ~ /data/sql/data.sql {2. deny all;3. }给favicon.ico和robots.txt设置过期时间;这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志1. location ~(favicon.ico) {2. log_not_found off;3. expires 99d;4. break;5. }6.7. location ~(robots.txt) {8. log_not_found off;9. expires 7d;10. break;11. }设定某个文件的过期时间;这里为600秒,并不记录访问日志1. location ^~ /html/scripts/loadhead_1.js {2. access_log off;3. root /opt/lampp/htdocs/web;4. expires 600;5. break;6. }文件反盗链并设置过期时间这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求“rewrite ^/ /leech.gif;”显示一张防盗链图片“access_log off;”不记录访问日志,减轻压力“expires 3d”所有文件3天的浏览器缓存1. location ~* ^.+/.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {2. valid_referers none blocked * * localhost208.97.167.194;3. if ($invalid_referer) {4. rewrite ^/ /leech.gif;5. return 412;6. break;7. }8. access_log off;9. root /opt/lampp/htdocs/web;10. expires 3d;11. break;12. }只充许固定ip访问网站,并加上密码1. root /opt/htdocs/www;2. allow 208.97.167.194;3. allow 222.33.1.2;4. allow 231.152.49.4;5. deny all;6. auth_basic "C1G_ADMIN";7. auth_basic_user_file htpasswd;将多级目录下的文件转成一个文件,增强seo效果/job-123-456-789.html 指向/job/123/456/789.html1. rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)/.html$ /job/$1/$2/jobshow_$3.html last;将根目录下某个文件夹指向2级目录如/shanghaijob/ 指向/area/shanghai/如果你将last改成permanent,那么浏览器地址栏显是/location/shanghai/1. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;上面例子有个问题是访问/shanghai 时将不会匹配1. rewrite ^/([0-9a-z]+)job$ /area/$1/ last;2. rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;这样/shanghai 也可以访问了,但页面中的相对链接无法使用,如./list_1.html真实地址是/area/shanghia/list_1.html会变成/list_1.html,导至无法访问。
nginx配置静态⽂件⼀、背景我们在使⽤nginx的时候会进⾏静态资源的配置,⽹上有很多⽅法,这⾥记录⼀下⾃⼰遇到的问题。
⼆、nginx下载与⽬录结构下载nginx的服务器:,下载完成后解压⼀下就可以了。
核⼼⽬录结构如下# 相同1. html⽂件夹默认的⽂件,存放默认的html2.logs⽂件夹记录错误和运⾏⽇志,这个可以进⾏排错3.conf⽂件夹最为重要的⽂件,⽤于uri的配置# 不同# nginx.exeWindows下的nginx启动⽬录# sbin⽂件Linux下的nginx启动⽬录三、基础命令列举⼀些常⽤的指令,在不同的语法上,运⾏的指令都差不多。
# windows下的# 启动nginxnginx start# nginx重载nginx -s reload# nginx停⽌nginx -s stop# nginx退出nginx -s quit# linux下的(与前⾯⼀致)./nginx [args]四、路由配置4.1 location配置4.1.1 路由配置含义# 路由匹配前缀内容=:精确匹配^~:精确前缀匹配~:区分⼤⼩写的正则匹配~*:不区分⼤⼩写的正则匹配/uri:普通前缀匹配/:通⽤匹配4.1.2 规则路由与请求uri# 规则设置location = / {echo"规则A";}location = /login {echo"规则B";}location ^~ /static/ {echo"规则C";}location ^~ /static/files {echo"规则X";}location ~ \.(gif|jpg|png|js|css)$ {echo"规则D";}location ~* \.png$ {echo"规则E";}location /img {echo"规则Y";}location / {echo"规则F";}# uri配置下的请求路由请求uri 匹配路由规则http://localhost/ 规则Ahttp://localhost/login 规则Bhttp://localhost/register 规则Fhttp://localhost/static/a.html 规则Chttp://localhost/static/files/a.txt 规则Xhttp://localhost/a.png 规则Dhttp://localhost/a.PNG 规则Ehttp://localhost/img/a.gif 规则Dhttp://localhost/img/a.tiff 规则Y4.1.3 路径选择在进⾏配置的时候需要使⽤到⼀些路径的管理,这⾥包括两个⽅法root和alias,其中alias只能在location中使⽤,⽽root可以任意使⽤。
Nginx配置伪静态⽬录⼀.简介try_file⽤于伪静态。
正常的静态⽂件是⼀个xx.html⽂件,他是真实存在于服务器某个⽂件夹中的。
动态⽹页是从数据库⾥查询,返回给浏览器的,实际上并没有这个⽂件,另外路径也很长。
伪静态优点:缩短URL路径,更美观URL路径短,容易被SEO收录,搜索排名靠前隐藏了真实的访问路径,更安全伪静态缺点:与原⽣的url⽐较在性能上,不如原⽣的url,简单的说伪静态就是在服务器上⼜进⾏了⼀层url解析,消耗服务器资源。
当然了这点消耗与优点相⽐,我们还是可以接受的。
下⾯是博客园中的⼀篇博客,地址是xx.html,让⼈看起来是⼀个html⽂件这个是微信的⼀个⽂章的地址,后⾯的参数是⽂章在数据库中的位置,还有⼀些其它信息⼆.配置server {listen 80;server_name ;index index.html index.php;root /data/html;location / {try_files $uri $uri/ /index.php?$query_string;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;}}try_files $uri $uri/ /index.php?$query_string如果没找到3434.html,就匹配$uri/,nginx会去/data/html找有没有这个⽬录。
⽽具体的 URI 及参数是在 REQUEST_URI 中传递给 FastCGI 和 PHP 程序的,因此不受 URI 变化的影响。
三.整体流程当点击后,这篇⽂章所在的服务器,会try_files $uri $uri/ /index.php?$query_string;,⾸先匹配是否是xx.html,明显不是,但也不是⽂件夹,那就交给fastcgi,转⽽交给php-fpn去操作。
Nginx伪静态规则
Nginx是一个广泛使用的Web服务器和反向代理服务器,可以通过使用伪静态规则来处理URL的重写,以便在处理时隐藏URL中的实际文件路径和查询参数。
下面是一些常见的Nginx伪静态规则示例:
1.将所有请求重写到一个统一的入口文件(如index.php):
location / {
try_files $uri $uri/ /index.php?$query_string;
}
2.将带有扩展名的文件请求重写为对应的无扩展名文件:
location / {
if (!-e $request_filename) {
rewrite ^/(.*)\.(html|php|css|js)$ /$1 last;
}
}
3.隐藏URL中的文件路径:
location / {
try_files $uri $uri/ /index.php?$query_string;
rewrite ^/category/(.*)$ /index.php?category=$1 last;
rewrite ^/product/(.*)$ /index.php?product=$1 last;
}
4.禁止直接访问特定文件扩展名的文件:
location ~ \.(sql|conf)$ {
deny all;
}
请记住,在使用伪静态规则之前,你需要确保Nginx已正确配置,并在配置文件中启用了相应的模块(如rewrite模块)。
此外,根据你的具体需求,你可能需要自定义和调整这些规则以满足你的应用程序的要求。
伪静态规则代码一、什么是伪静态规则代码在网站开发中,伪静态是指通过对URL进行重写,使其看起来像是静态页面的一种技术。
伪静态规则代码是指用来实现伪静态的一段代码或配置。
传统动态网页的URL通常包含参数,例如:。
而使用伪静态后,URL会变得更加友好和美观,例如:。
通过使用伪静态规则代码,可以提升网站的用户体验和搜索引擎优化效果。
二、为什么使用伪静态规则代码1. 改善用户体验动态网址通常包含大量参数和特殊字符,不易记忆和分享。
而采用伪静态后,URL会变得简洁、有意义且易于理解。
这有助于提高用户对网站内容的识别度和理解度。
2. 提升搜索引擎优化效果搜索引擎更喜欢处理静态页面而非动态页面。
通过使用伪静态规则代码,可以将动态生成的页面转换为看起来像是静态页面的形式呈现给搜索引擎爬虫。
这有助于提高网站在搜索引擎结果页面中的排名。
3. 方便URL的管理和维护动态网址通常包含大量参数,不方便管理和维护。
而使用伪静态后,URL会变得简洁明了,易于管理和维护。
三、如何编写伪静态规则代码1. 选择合适的伪静态规则代码方式在编写伪静态规则代码之前,需要先选择合适的方式来实现伪静态。
常见的方式包括:•Apache服务器下使用.htaccess文件•Nginx服务器下使用rewrite模块•IIS服务器下使用URL Rewrite模块根据所使用的服务器类型和具体需求,选择相应的方式进行配置。
2. 编写伪静态规则代码示例(以Apache服务器为例)a. 创建.htaccess文件首先,在网站根目录下创建一个名为.htaccess的文件。
b. 启用.htaccess确保Apache服务器已开启.htaccess功能。
在主配置文件或虚拟主机配置中添加以下内容:<Directory "/path/to/your/website">AllowOverride All</Directory>c. 编写伪静态规则代码在.htaccess文件中添加以下示例代码:RewriteEngine OnRewriteBase /# 将 /article.php?id=1 重写为 /article/1.htmlRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]在上述示例代码中,RewriteEngine On表示启用URL重写功能,RewriteBase /表示基础重写路径。
IIS6.0伪静态设置:1.把下面的压缩包复制到自己的桌面上,上传到自己的云主机下的需要设置伪静态的站点的根目录里,解压到跟目录里,这时会多出一个rewrite文件夹,文件夹里有两个文件mtbnotif.dll和Rewrite.dll,下面需要用到。
rewrite.rar(如果压缩包有问题,请在网站根目录自己建立一个rewrite文件夹,在把Rewrite.dll mtbnotif.dll这两个文件复制进rewrite文件夹里。
)2.打开rewrite建立一个扩展名为.ini的httpd.ini文件,如下图所示,用记事本打开此文件,把自己的规则复制进去保存。
3.右键rewrite目录,给此目录everyone权限,如下图4.点击电脑的开始----运行,并在里面输入regsvr32空格后加上刚才解压出来的两个文件其中的一个文件mtbnotif.dll的路径。
比如这儿要输入的是regsvr32 D:\www\web\自己网站\wwwroot\rewrite\mtbnotif.dll然后点击确定,会出现下图的注册.dll文件的成功的提示。
5.打开iis找到自己的站点,右键----属性----ISAPI筛选器,筛选器随便填写就行,可执行文件里需要点击添加,找到刚才解压后的Rewrite.dll文件点击打开,这时可执行文件里就是Rewrite.dll的路径,点击确定---确定即可。
6.以上就是设置伪静态的步骤,如果您还没成功,请检查自己的网站后台是否开启了伪静态,如果没开启登陆后台开启下。
7.如果后期您换程序了,发现打不开网站,请到iis去掉伪静态的设置,去掉方法:打开iis 找到自己的站点,右键----属性----ISAPI筛选器,找到这个设置过的筛选器删除确定即可。
后期如果需要配置在重新按照上面的步骤配置。