Heim >php教程 >PHP开发 >Umschreiben der Apache-URL

Umschreiben der Apache-URL

黄舟
黄舟Original
2016-12-21 11:21:212580Durchsuche

Die erste Methode: Wenn Sie die URL-Adresse in der Apache-Umgebung neu schreiben möchten, sind reguläre Ausdrücke die grundlegendste Anforderung, aber für allgemeine URL-Adressen kann der grundlegende Abgleich die meisten unserer Anforderungen erfüllen, es sei denn, es handelt sich um etwas ganz Besonderes URL-Adresse, aber das ist nicht der Bereich, den ich besprechen möchte. Erfahren Sie, wie Sie URL-Adressen in wenigen einfachen Schritten umschreiben:

002

003 URL-Beispiel

004

005 URL neu schreiben: http://www.baidu.com/?p=152

006

007 Original-URL: http://www.baidu.com/p152.html

008

009 Regeln umschreiben:

010

011 ^p ([0-9]+).html /?p=$1 [L]

012

013 Grundkenntnisse regulärer Ausdrücke:

014

015 ^ Der Anfang der passenden Zeile stimmt mit dem Anfang der URL-Adresse überein. Bei RewriteRule ist der Domänenname (http://www.xxxx.com) nicht Teil der URL-Adresse, wie oben:?p= 152

016

017 () Trennt einen erfassten Ausdruck, wie oben: ([0-9]+)

018

019 [] Definiert eine Zeichenklasse wie oben: [0 -9] stellt eine Zahl von 0-9 dar

020

021 + gibt an, dass das vorherige Zeichen einmal oder mehrmals wiederholt und abgeglichen werden kann oben: [0-9]+, Angabe einer beliebigen Zahlenkombination

022

023 Zeichen-Escape, wie oben: Escape

024

025 Andere :

026

027 [L] bedeutet zuletzt, den Abgleich mit anderen beenden

028

029 Die Methode ist wie folgt:

030

031 1. Öffnen Sie die httpd.conf-Datei und suchen Sie nach

032

033 #LoadModule rewrite_modulemodules/mod_rewrite.so Kommentar vor #

034

035 2. httpd-vhosts-Datei öffnen, Rewrite-Regeln in VirtualHost hinzufügen,

036

037 RewriteEngine Ein

038

039 RewriteRule ^p([0-9]+ ).html /?p=$1 [L]

040

041 Im Grunde sind dies die beiden oben genannten Schritte. Im Allgemeinen ist das Umschreiben von URL-Adressen in Apache relativ einfach. Es ist viel schneller zu erlernen als das Lesen von Dokumenten. Wenn Sie es jedoch genauer verstehen möchten, müssen Sie die entsprechenden Dokumente lesen. Denken Sie daran: Bei jeder Übereinstimmung handelt es sich tatsächlich um einen Prozess zum Ersetzen regulärer Ausdrücke.

042

043 Das Erstellen suchmaschinenfreundlicher URL-Adressen ist für PHP-Programmierer sehr wichtig. Daher ist das Erlernen des Umschreibens von URL-Adressen in Apache eine der grundlegendsten Anforderungen.

044

045

046 Zweite Methode:

047

048 1. Überprüfen Sie zunächst, ob das Rewrite-Modul installiert ist:

049

050 cat httpd.conf |. Pseudostatische HTML-Verbindung generieren:

054

055 (1) Pseudostatisches HTML generieren

056

057 Am Ende des < hinzufügen ;VirtualHost> Abschnitt

058

059 RewriteEngine auf

060 RewriteRule /goods([0-9]+).html /goods.php?id=$1 [PT ]

061 Eine standardmäßigere Schreibweise ist:

062 RewriteRule ^(.*)/goods([0-9]+).html$ $1/goods.php?id= $2 [PT]

063 Prägnanteres Schreiben:

064 /goods(d+).html /goods.php?id=$1

065

066 Das erste ( 0-9]+) entspricht dem Parameter $1 und so weiter, das zweite entspricht $2

067

068 Beispiel:

069

070 RewriteRule / forum-([0-9]+)-([0-9]+).html /forumdisplay.php?fid=$1&page=$2 [PT]

071

072 Test Ist http://www.xxx.com/goods1.html derselbe Inhalt wie /goods.php?id=1?

073

074 Zum Schluss ersetzen Alle Links mit der eingestellten Pseudo-Adressmethode Statische HTML-Adresse

075

076

077 [PT]: Globale URL-Konvertierung, d. h. die konvertierte Datei „goods31.html“ entspricht „goods.php?id=31“ (Standardeinstellung ist dies ohne Parameter)

078 [R]: URL-Umleitung ist Wenn Sie über „goods31.html“ darauf zugreifen, springen Sie zu „goods.php?id=31“

079

080

081 3. Anti-Hotlink:

082

083 RewriteCrond %{HTTP_HOST} !xxxx.com [R=301,L]

084 RewriteRule ^(.*)$ http://www.xxxx.com/warning. html [ R=301,L]

085

086 Anfragen nicht von xxxx.com an http://www.xxxx.com umleiten

087

088 Besserer Ansatz:

089 RewriteCond %{HTTP_REFERER} !^http://(www.)?xxxx.com/.*$ [NC]

090 RewriteRule .(mp3 |rar|jpe|gif)$ http://www.xxxx.com/warning.jpg [R=301,L]

091

092 4. Anti-Baidu-Crawler:

093 RewriteCond %{HTTP_USER_AGENT} ^Baiduspider [OR]

094 RewriteRule ^(.*)$ http://www.google.com [R=301,L]

095 Übertragen Sie den Crawler von Baidu zu Google

096

097 PS: Pseudostatische PHP-Methode

101

102 Methode 1:

103

104 Zum Beispiel diese Webseite

105

106 http://www.xxxx.com/soft.php/1,100,8630. html

107

108 Tatsächlich ist das verarbeitete Skript soft.php und der Parameter ist 1.100.8630

109

110 Entspricht soft. php?a=1&b=1=100&c=8630, aber diese URL ist zu schwer zu merken. Suchmaschinen mögen es auch nicht.

111

112 Echtes Static ist einfach vollständig generiertes HTML.

113

114 Direkte Ausgabe, wenn der Client zugreift. Es ist keine Skripterklärung erforderlich. Es wird sehr gute Ergebnisse liefern, wenn der Datenverkehr sehr groß ist (z. B. wenn es täglich Millionen von Besuchen gibt). Mit anderen Worten: Diese HTML-Seite existiert tatsächlich auf der Serverseite.

115

116 Natürlich, wenn der Traffic Ihrer Website nicht so groß ist. Das Umschreiben von URLs ist die beste Methode (meiner persönlichen Meinung nach kann ein Lastausgleich bei starkem Datenverkehr in Betracht gezogen werden. Das spielt auch keine Rolle)

117

118 Es gibt viele Möglichkeiten zum Umschreiben URLs. APACHE,IISREWRITE. Sogar PHP-Skripte können damit direkt umgehen. Im obigen Beispiel erfolgt die Verarbeitung beispielsweise direkt per PHP-Skript (der Vorteil dieser Methode besteht darin, dass sie bei großem Datenverkehr direkt den Druck auf den WEB-Server verringert. PS: Dies ist auch eine persönliche Meinung:

119

120 === ================================ ===========

121

122 Nehmen wir das Programm als Beispiel, um über die pseudostatische Programmimplementierungsmethode von PHP zu sprechen habe diese Methode bereits in anderen Foren-Communities gepostet

123

124 Nehmen Sie das Programm als Beispiel:

125

126 http://www .xxxx.com/soft.php/1,100,8630.html

127

128 CODE:

129

130 //Verwenden Sie die Servervariable um die PATH_INFO-Informationen zu erhalten, ist es /1,100,8630.html, der Teil nach dem Ausführungsskriptnamen

131

132 if(@$path_info =$ _SERVER). ["PATH_INFO"]){

133 //Reguläre Übereinstimmungsparameter

134 if(preg_match("// (d+),(d+),(d+).html/si", $path_info,$arr_path)){

135 $gid =intval($arr_path[1]); //Wert 1 abrufen

136 $sid =intval($arr_path[2]) ; //Erhalte den Wert 100

137 $softid =intval($arr_path[3]); //Erhalte den Wert 8630

138 }else die("Path:Error!") ;

139 //Entspricht soft.php?gid=1&sid=100&softid=8630

140 //So einfach ist das ~)

141 Methode 2:

142 Öffnen Sie die Apache-Konfigurationsdatei httpd.conf.

143 Zwei Generäle #Loadmodule Rewrite_modules/MOD_REWRITE Die #🎜>

144 drei hinzufügen:

145 & lt; ifmodule & gt; Am

147 #RewriteCond %{ENV:SCRIPT_URL} (?:index|dispbbs)[-0-9]+.html

148 RewriteRule ^(.*?(?:index|dispbbs))- ([-0-9]+).html 1.php?__is_apache_rewrite=1&__rewrite_arg=2

149

150 Viertens müssen wir die Zuordnung der ASP-Post-URL realisieren Zum PHP-Beitrag fügen Sie im dritten Schritt zwischen hinzu:

151 RewriteMap tolowercase int:tolower

152 RewriteCond %{QUERY_STRING} (? : boardid|page|id|replyid|star|skin)=d+ [NC]

153 RewriteRule ^(.*(?:index|dispbbs)).asp 1.php?{tolowercase:%{QUERY_STRING } }&__is_apache_rewrite=1

154 httpd.conf speichern und Apache neu starten

155 Methode 3:

156

157 function mod_rewrite( ){

158 global

159 $ _GET;

160 $nav=$ _SERVER["REQUEST_URI"];

161 $script_name=$ _SERVER ["SCRIPT_NAME"];

162 $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1

163 $nav=preg_replace ("/^.ht(m){1}(l){0,1}$/","",$nav);//Dieser Satz ist .html oder .htm mit entferntem Ende

164 $vars = explosion("/",$nav);

165 for($i=0;$i

166 $ _GET["$vars[$i]"]=$vars[$i+1];

167 }  

168 return $ _GET;  

170 mod_rewrite();

171 $yearn=$ _GET["year"];//Das Ergebnis ist '2006'

172 $action=$ _GET[ "action"]; // Das Ergebnis ist '_add'

173 echo $ action;

175?php

177 function mod_rewrite(){

178 global $ _GET;

179 $nav= $ _SERVER["REQUEST_URI"];

180 $script_name= $ _SERVER["SCRIPT_NAME"];

181 $nav=substr(ereg_replace("^$script_name","",urldecode($nav)),1); =preg_replace("/^.ht(m){1}(l){0,1}$/","",$nav);//Dieser Satz ist .html oder .htm mit entferntem Ende

183 $vars = explosion("/",$nav);

184 for($i=0;$i

185 $ _GET["$vars[$i]"]=$vars[$i+1];

186 }  

187 return  

188 $ _get ;

189}

190 mod_rewrite ();

191 $ Yearn = $ _get ["year"]; // Das Ergebnis ist '2006'

192 $action=$ _GET["action"];//Das Ergebnis ist '_add'

193 echo $yearn;194 echo $action; >195 In vielen Fällen kann der Zugriff auf eine bestimmte IP leicht dazu führen, dass die CPU zu 100 % ausgelastet ist (z. B. festes Crawling durch einige Suchmaschinen, eine große Anzahl von Sammelstellen durch andere). Zu diesem Zeitpunkt müssen wir einige effektive verwenden bedeutet, die IP des anderen Teilnehmers zu blockieren, damit er die Ressourcen des Servers nicht verbrauchen kann. Wenn auf Ihrem Webserver das Rewrite-Modul installiert ist, können Sie auch versuchen, die IP des anderen Teilnehmers zu blockieren .

196 1. Beispielsweise leiten wir eine bestimmte IP direkt zur Baidu-Homepage um und fügen Code in der .htaccess-Datei im Stammverzeichnis der Website hinzu:

197 RewriteCond % 123.123.123.123 [ NC ]RewriteRule ^(.*)$ http://www.baidu.com/$1 [R=301] Ersetzen Sie die IP 123.123.123.123 durch die IP, die Sie einschränken möchten

198 2. Wenn Sie möchten Um mehrere IPs zu implementieren, können Sie wie folgt schreiben:

199 RewriteCond % 123.123.123.123 [OR]RewriteCond % 124.124.124.124 [NC]RewriteRule ^(.*)$ http://www.baidu.com /$1 [R=301]

Das Obige ist der Inhalt der URL-Adressumschreibung von Apache. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Apache-Speicherfreigabe~Nächster Artikel:Apache-Speicherfreigabe~