백엔드 개발 PHP 튜토리얼 Apache 相关 mod_rewrite ,RewriteCond,{HTTP_HOST}_PHP教程

Apache 相关 mod_rewrite ,RewriteCond,{HTTP_HOST}_PHP教程

Jul 20, 2016 am 11:13 AM
apache h host http mod rewrite rewritecond 추가하다 도메인 이름 표시 관련된

1.给子域名加www标记 

<span RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.<span com$ [NC] 
RewriteCond </span>%{HTTP_HOST} !^www\.<span  [NC] 
RewriteRule </span>.? http:<span //</span><span www.%1example.com%{REQUEST_URI} [R=301,L] </span>
这个规则抓取二级域名的%1变量,如果不是以www开始,那么就加www,以前的域名以及{REQUEST_URI}会跟在其后。</span>
로그인 후 복사

2.去掉域名中的www标记

<span RewriteCond %{HTTP_HOST} !^example\.<span com$ [NC] 
RewriteRule </span>.? http:<span //</span><span example.com%{REQUEST_URI} [R=301,L] </span></span>
로그인 후 복사

3.去掉www标记,但是保存子域名

<span RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?example\.<span com)$ [NC] 
RewriteRule </span>.? http:<span //</span><span %1%{REQUEST_URI} [R=301,L] </span>
这里,当匹配到1%变量以后,子域名才会在%2(内部原子)中抓取到,而我们需要的正是这个%1变量。 </span>
로그인 후 복사



4.防止图片盗链

<span <span 一些站长不择手段的将你的图片盗链在他们网站上,耗费你的带宽。你可以加一下代码阻止这种行为。 
RewriteCond </span>%{HTTP_REFERER} !^<span $ 
RewriteCond </span>%{HTTP_REFERER} !^http:<span //</span><span (www\.)?example\.com/ [NC] </span>
RewriteRule \.(gif|jpg|png)$ -<span  [F] 
如果{HTTP_REFERER}值不为空,或者不是来自你自己的域名,这个规则用[F]FLAG阻止以gif</span>|jpg|<span png 结尾的URL 
如果对这种盗链你是坚决鄙视的,你还可以改变图片,让访问盗链网站的用户知道该网站正在盗用你的图片。 
RewriteCond </span>%{HTTP_REFERER} !^<span $ 
RewriteCond </span>%{HTTP_REFERER} !^http:<span //</span><span (www\.)?example\.com/.*$ [NC] </span>
RewriteRule \.(gif|jpg|png)$ 你的图片地址 [R=301,<span L] 
除了阻止图片盗链链接,以上规则将其盗链的图片全部替换成了你设置的图片。 
你还可以阻止特定域名盗链你的图片: 
RewriteCond </span>%{HTTP_REFERER} !^http:<span //</span><span (www\.)?leech_site\.com/ [NC] </span>
RewriteRule \.(gif|jpg|png)$ - [F,<span L] 
这个规则将阻止域名黑名单上所有的图片链接请求。 
当然以上这些规则都是以{HTTP_REFERER}获取域名为基础的,如果你想改用成IP地址,用{REMOTE_ADDR}就可以了。</span></span>
로그인 후 복사

5.如果文件不存在重定向到404页面

<span <span 如果你的主机没有提供404页面重定向服务,那么我们自己创建。 
RewriteCond </span>%{REQUEST_FILENAME} !-<span f 
RewriteCond </span>%{REQUEST_FILENAME} !-<span d 
RewriteRule </span>.? /404.<span php [L] 
这里</span>-f匹配的是存在的文件名,-d匹配的存在的路径名。这段代码在进行404重定向之前,会判断你的文件名以及路径名是否存在。你还可以在404页面上加一个?url=<span $1参数: 
RewriteRule </span>^/?(.*)$ /404.php?url=$1<span  [L] 
这样,你的404页面就可以做一些其他的事情,例如默认信心,发一个邮件提醒,加一个搜索,等等。</span></span>
로그인 후 복사



6.重命名目录

<span <span 如果你想在网站上重命名目录,试试这个: 
RewriteRule </span>^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,<span L] 
在规则里我添加了一个&ldquo;</span>.&rdquo;(注意不是代表得所有字符,前面有转义符)来匹配文件的后缀名。 </span>
로그인 후 복사


7.将.html后缀名转换成.php

<span 前提是.<span html文件能继续访问的情况下,更新你的网站链接。 
RewriteRule </span>^/?([a-z/]+)\.html$ $1.<span php [L] 
这不是一个网页重定向,所以访问者是不可见的。让他作为一个永久重定向(可见的),将FLAG修改[R</span>=301,L]。 </span>
로그인 후 복사


8.创建无文件后缀名链接

<span 如果你想使你的PHP网站的链接更加简洁易记-或者隐藏文件的后缀名,试试这个:<span  
RewriteRule </span>^/?([a-z]+)$ $1.<span php [L] 
如果网站混有PHP以及HTML文件,你可以用RewriteCond先判断该后缀的文件是否存在,然后进行替换: 
RewriteCond </span>%{REQUEST_FILENAME}.php -<span f 
RewriteRule </span>^/?([a-zA-Z0-9]+)$ $1.<span php [L] 
RewriteCond </span>%{REQUEST_FILENAME}.html -<span f 
RewriteRule </span>^/?([a-zA-Z0-9]+)$ $1.<span html [L] 
如果文件是以</span>.php为后缀,这条规则将被执行。</span>
로그인 후 복사

9.检查查询变量里的特定参数

<span <span 如果在URL里面有一个特殊的参数,你可用RewriteCond鉴别其是否存在: 
RewriteCond </span>%{QUERY_STRING} !uniquekey=<span  
RewriteRule </span>^/?script_that_requires_uniquekey\.php$ other_script.php [QSA,<span L] 
以上规则将检查{QUERY_STRING}里面的uniquekey参数是否存在,如果{REQUEST_URI}值为script_that_requires_uniquekey,将会定向到新的URL。 </span></span>
로그인 후 복사


10.删除查询变量

<span <span Apache的mod_rewrite模块会自动辨识查询变量,除非你做了以下改动: 
a)</span>.分配一个新的查询参数(你可以用[QSA,<span L]FLAG保存最初的查询变量) 
b)</span>.在文件名后面加一个&ldquo;?&rdquo;(比如index.php?)。符号&ldquo;?&rdquo;不会在浏览器的地址栏里显示。</span>
로그인 후 복사

11.用新的格式展示当前URI

<span 如果这就是我们当前正在运行的URLs:/index.php?id=nnnn。我们非常希望将其更改成/nnnn并且让搜索引擎以新格式展现。首先,我们为了让搜索引擎更新成新的,得将旧的URLs重定向到新的格式,但是,我们还得保证以前的index.<span php照样能够运行。是不是被我搞迷糊了? 
实现以上功能,诀窍就在于在查询变量中加了一个访问者看不到的标记符&ldquo;marker&rdquo;。我们只将查询变量中没有出现&ldquo;marker&rdquo;标记的链接进行重定向,然后将原有的链接替换成新的格式,并且通过[QSA]FLAG在已有的参数加一个&ldquo;marker&rdquo;标记。以下为实现的方式: 
RewriteCond </span>%{QUERY_STRING} !<span marker 
RewriteCond </span>%{QUERY_STRING} id=([-a-zA-Z0-9_+]+<span ) 
RewriteRule </span>^/?index\.php$ %1? [R=301,<span L] 
RewriteRule </span>^/?([-a-zA-Z0-9_+]+)$ index.php?marker &id=$1<span  [L]
这里,原先的URL:http</span>:<span //</span><span www.example.com/index.php?id=nnnn,不包含marker,所以被第一个规则永久重定向到http://www.example.com/nnnn,第二个规则将http://www.example.com/nnnn反定向到http://www.example.com/index.php?marker&id=nnnn,并且加了marker以及id=nnnn两个变量,最后mod_rewrite就开始进行处理过程。</span>
第二次匹配,marker被匹配,所以忽略第一条规则,这里有一个&ldquo;.&rdquo;字符会出现在http:<span //</span><span www.example.com/index.php?marker &id=nnnn中,所以第二条规则也会被忽略,这样我们就完成了。</span>
注意,这个解决方案要求Apache的一些扩展功能,所以如果你的网站放于在共享主机中会遇到很多障碍。</span>
로그인 후 복사


12.保证安全服务启用

<span <span Apache可以用两种方法辨别你是否开启了安全服务,分别引用{HTTPS}和{SERVER_PORT}变量: 
RewriteCond </span>%{REQUEST_URI} ^secure_page\.<span php$ 
RewriteCond </span>%{HTTPS} !<span on 
RewriteRule </span>^/?(secure_page\.php)$ https:<span //</span><span www.example.com/$1 [R=301,L] </span>
以上规则测试{REQUEST_URI}值是否等于我们的安全页代码,并且{HTTPS}不等于on。如果这两个条件同时满足,请求将被重定向到安全服务URI.<span 另外你可用{SERVER_PORT}做同样的测试,443是常用的安全服务端口 
RewriteCond </span>%{REQUEST_URI} ^secure_page\.<span php$ 
RewriteCond </span>%{SERVER_PORT} !^443<span $ 
RewriteRule </span>^/?(secure_page\.php)$ https:<span //</span><span www.example.com/$1 [R=301,L]</span></span>
로그인 후 복사

13.在特定的页面上强制执行安全服务

<span <span 遇到同一个服务器根目录下分别有一个安全服务域名和一个非安全服务域名,所以你就需要用RewriteCond 判断安全服务端口是否占用,并且只将以下列表的页面要求为安全服务: 
RewriteCond </span>%{SERVER_PORT} !^443<span $ 
RewriteRule </span>^/?(page1|page2|page3|page4|page5)$ https:<span //</span><span www.example.com/%1[R=301,L] </span>
<span 以下是怎样将没有设置成安全服务的页面返回到80端口: 
RewriteCond </span>%{ SERVER_PORT } ^443<span $ 
RewriteRule </span>!^/?(page6|page7|page8|page9)<span $http</span>:<span //</span><span www.example.com%{REQUEST_URI} [R=301,L]<br /><br />                                                      <br /></span></span>
로그인 후 복사

                                                                                 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440353.htmlTechArticle1.给子 域名 加www标记 %{HTTP_HOST} !^www\. .? http: 这个规则抓取二级域名的%1变量,如果不是以www开始,那么就加www,以前的域名以及{REQUEST_...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

H5 프로젝트를 실행하는 방법 H5 프로젝트를 실행하는 방법 Apr 06, 2025 pm 12:21 PM

H5 프로젝트를 실행하려면 다음 단계가 필요합니다. Web Server, Node.js, 개발 도구 등과 같은 필요한 도구 설치. 개발 환경 구축, 프로젝트 폴더 작성, 프로젝트 초기화 및 코드 작성. 개발 서버를 시작하고 명령 줄을 사용하여 명령을 실행하십시오. 브라우저에서 프로젝트를 미리보고 개발 서버 URL을 입력하십시오. 프로젝트 게시, 코드 최적화, 프로젝트 배포 및 웹 서버 구성을 설정하십시오.

XML로 PDF를 내보내는 방법 XML로 PDF를 내보내는 방법 Apr 03, 2025 am 06:45 AM

XML을 PDF로 내보내는 두 가지 방법이 있습니다 : XSLT 사용 및 XML 데이터 바인딩 라이브러리 사용. XSLT : XSLT 스타일 시트를 만들고 XSLT 프로세서를 사용하여 XML 데이터를 변환 할 PDF 형식을 지정하십시오. XML 데이터 바인딩 라이브러리 : XML 데이터 바인딩 라이브러리 가져 오기 PDF 문서 객체로드 XML 데이터 내보내기 PDF 파일을 만듭니다. PDF 파일에 더 나은 방법은 요구 사항에 따라 다릅니다. XSLT는 유연성을 제공하지만 데이터 바인딩 라이브러리는 구현하기가 간단합니다. 간단한 변환의 경우 데이터 바인딩 라이브러리가 더 좋으며 복잡한 변환의 경우 XSLT가 더 적합합니다.

pom.xml을 생성하는 방법 pom.xml을 생성하는 방법 Apr 03, 2025 am 06:00 AM

pom.xml 파일을 생성하는 다음과 같은 방법이 있습니다. Maven Archetype를 사용하여 사전 정의 된 프로젝트 템플릿을 제공하여 특정 유형의 프로젝트에 대해 POM.XML 파일을 자동으로 생성하십시오. Maven 헬퍼 플러그인을 사용하여 pom.xml 파일을 생성하기위한 명령을 제공하십시오. 프로젝트의 pom.xml 파일을 사용자 정의하려면 수동으로 만듭니다.

부트 스트랩 테이블을 풀기 위해 서버 측에서 문자 인코딩을 설정하는 방법 부트 스트랩 테이블을 풀기 위해 서버 측에서 문자 인코딩을 설정하는 방법 Apr 07, 2025 pm 12:00 PM

서버 측에서 문자 인코딩을 설정하려면 Bridble Bootstrap 테이블을 해결하려면 다음 단계를 따라야합니다. 서버 문자 인코딩을 확인하십시오. 서버 구성 파일 편집; 인코딩을 UTF-8로 설정하십시오. 서버를 저장하고 다시 시작합니다. 인코딩을 확인하십시오.

Apache에서 CGI 디렉토리를 설정하는 방법 Apache에서 CGI 디렉토리를 설정하는 방법 Apr 13, 2025 pm 01:18 PM

Apache에서 CGI 디렉토리를 설정하려면 다음 단계를 수행해야합니다. "CGI-BIN"과 같은 CGI 디렉토리를 작성하고 Apache 쓰기 권한을 부여하십시오. Apache 구성 파일에 "Scriptalias"지시록 블록을 추가하여 CGI 디렉토리를 "/cgi-bin"URL에 매핑하십시오. Apache를 다시 시작하십시오.

Debian OpenSSL 구성을 확인하는 방법 Debian OpenSSL 구성을 확인하는 방법 Apr 12, 2025 pm 11:57 PM

이 기사는 데비안 시스템의 OpenSSL 구성을 확인하여 시스템의 보안 상태를 신속하게 파악하는 데 도움이되는 몇 가지 방법을 소개합니다. 1. OpenSSL 버전을 먼저 확인하고 OpenSSL이 설치되었는지 확인 및 버전 정보를 확인하십시오. 터미널에 다음 명령을 입력하십시오. OpenSSLVERSION이 설치되지 않으면 시스템에 오류가 발생합니다. 2. 구성 파일을 봅니다. OpenSSL의 기본 구성 파일은 일반적으로 /etc/ssl/openssl.cnf에 있습니다. 텍스트 편집기 (예 : Nano)를 사용하여 Sudonano/etc/ssl/openssl.cnf이 파일에는 키, 인증서 경로 및 암호화 알고리즘과 같은 중요한 구성 정보가 포함되어 있습니다. 3. Ope를 활용하십시오

웹 사이트 성과를 향상시키기 위해 Debian Apache Logs를 사용하는 방법 웹 사이트 성과를 향상시키기 위해 Debian Apache Logs를 사용하는 방법 Apr 12, 2025 pm 11:36 PM

이 기사는 데비안 시스템에서 Apache Logs를 분석하여 웹 사이트 성능을 향상시키는 방법을 설명합니다. 1. 로그 분석 기본 사항 Apache Log는 IP 주소, 타임 스탬프, 요청 URL, HTTP 메소드 및 응답 코드를 포함한 모든 HTTP 요청의 자세한 정보를 기록합니다. 데비안 시스템 에서이 로그는 일반적으로 /var/log/apache2/access.log 및 /var/log/apache2/error.log 디렉토리에 있습니다. 로그 구조를 이해하는 것은 효과적인 분석의 첫 번째 단계입니다. 2. 로그 분석 도구 다양한 도구를 사용하여 Apache 로그를 분석 할 수 있습니다.

아파치를 시작하는 방법 아파치를 시작하는 방법 Apr 13, 2025 pm 01:06 PM

Apache를 시작하는 단계는 다음과 같습니다. Apache 설치 (명령 : Sudo apt-get Apache2를 설치하거나 공식 웹 사이트에서 다운로드) 시작 apache (linux : sudo systemctl start : windes (선택 사항, Linux : Sudo SystemCtl

See all articles