ºìÁªLinuxÃÅ»§
Linux°ïÖú

ApacheÖØÐ´¹æÔòµÄ³£¼ûÓ¦ÓÃ

·¢²¼Ê±¼ä:2006-03-13 00:16:25À´Ô´:ºìÁª×÷Õß:ÐÂÐÂ
---- ±¾ÎÄÖ¼ÔÚÌṩÈçºÎÓÃApacheÖØÐ´¹æÔòÀ´½â¾öһЩ³£¼ûµÄURLÖØÐ´·½·¨µÄÎÊÌ⣬ͨ¹ý³£¼ûµÄʵÀý¸øÓû§Ò»Ð©Ê¹ÓÃÖØÐ´¹æÔòµÄ»ù±¾·½·¨ºÍÏßË÷¡£

Ò»¡¢ÎªÊ²Ã´ÐèÒªÓÃÖØÐ´¹æÔò

---- ÍøÕ¾µÄÉúÃüÔÚÓÚ²»¶ÏµØ½øÐиüкÍά»¤£¬¸ù¾ÝÒµÎñ·¢Õ¹µÄÐèÇó×ªÒÆ·þÎñÆ÷½øÐÐά»¤¡¢ÖØÐÂ×é֯Ŀ¼½á¹¹¡¢±ä»»URLÉõÖÁ¸Ä±äµ½ÐµÄÓòÃûµÈÇé¿öÊǾ­³£·¢ÉúµÄ¡£ÎªÁËÈÿͻ§²»»áÒò´ËÊܵ½ÈκÎÓ°Ï죬×îºÃµÄ·½·¨¾ÍÊÇʹÓÃApache Rewrite Rule(ÖØÐ´¹æÔò)¡£

¶þ¡¢ÖØÐ´¹æÔòµÄ×÷Ó÷¶Î§

---- 1£®Ê¹ÓÃÔÚApacheÖ÷ÅäÖÃÎļþhttpd.confÖС£
---- 2£®Ê¹ÓÃÔÚhttpd.confÀﶨÒåµÄÐéÄâÖ÷»úÅäÖÃÖС£
---- 3£®Ê¹ÓÃÔÚ»ù±¾Ä¿Â¼µÄ¿çÔ½ÅäÖÃÎļþ.htaccessÖС£

Èý¡¢ÖØÐ´¹æÔòµÄÓ¦ÓÃÌõ¼þ

---- µ±Óû§µÄWebÇëÇó×îÖÕ±»µ¼Ïòµ½Ä³Ì¨Web·þÎñÆ÷µÄApacheÊØ»¤½ø³Ì£¬Apache¸ù¾ÝÅäÖÃÎļþÅжϸÃÇëÇóÊÇÖ÷ÅäÖû¹ÊÇÐéÄâÖ÷»ú£¬ÔÙ¸ù¾ÝÓû§ÔÚä¯ÀÀÆ÷ÖÐÇëÇóµÄURLÀ´Æ¥ÅäÖØÐ´¹æÔò£¬²¢ÇÒ¸ù¾Ýʵ¼ÊµÄÇëÇó·¾¶Æ¥Åä.htaccessÖеÄÖØÐ´¹æÔò£¬×îºó°ÑÇëÇóµÄÄÚÈÝ´«»Ø¸øÓû§¡£¸ÃÏìÓ¦¿ÉÄÜÓÐ2ÖÖ¡£

---- 1£®½«ÇëÇóÄÚÈÝÍâ²¿ÖØ¶¨Ïò(Redirect)µ½ÁíÒ»¸öURL
---- ÈÃä¯ÀÀÆ÷ÔÙ´ÎÒÔеÄURL·¢³öÇëÇó(R=301»òÕßR=302£¬ÁÙʱµÄ»òÊÇÓÀ¾ÃµÄÖØ¶¨Ïò)¡£

---- ÀýÈ磬һ¸öÍøÕ¾ÓÐÕý¹æµÄURLºÍ±ðÃûURL£¬¶Ô±ðÃûURL½øÐÐÖØ¶¨Ïòµ½Õý¹æURL£¬»òÕßÍøÕ¾¸Ä»»³ÉÁËеÄÓòÃû£¬Ôò°Ñ¾ÉµÄÓòÃûÖØ¶¨Ïòµ½ÐµÄÓòÃû¡£

---- 2£®ÓÉApacheÄÚ²¿×ÓÇëÇó´úÀí²úÉúеÄÄÚÈÝËͻظø¿Í»§[P,L]
---- ÕâÊÇApacheÄÚ²¿¸ù¾ÝÖØÐ´ºóµÄURL£¬Í¨¹ý´úÀíÄ£¿éÇëÇóÄÚÈݲ¢½«×îÖÕÄÚÈÝËͻظø¿Í»§£¬¿Í»§¶Ëä¯ÀÀÆ÷²»±ØÔÙ´ÎÇëÇó£¬ä¯ÀÀÆ÷ÖеÄURL²»»á±»ÖØÐ´£¬µ«Êµ¼ÊÄÚÈÝÓÉApache¸ù¾ÝÖØÐ´¹æÔòºóµÄURLÉú³É¡£

---- ÀýÈ磬ÔÚ¹«Ë¾·À»ðǽÉÏÔËÐеÄApacheÆô¶¯ÕâÖÖ´úÀíÖØÐ´¹æÔò£¬´úÀí¶ÔÄÚ²¿Íø¶ÎÉϵÄWeb·þÎñÆ÷µÄÇëÇó¡£

ËÄ¡¢ÖØÐ´¹æÔòÔõÑù¹¤×÷

---- ÎÒÃǼٶ¨ÔÚ±àÒëApacheʱÒѾ­°Ñmod_rewrite±àÒë³ÉÄ£¿é£¬È·ÐÅÄúµÄhttpd.confÖÐÓÐLoadModule rewrite_module libexec/mod_rewrite.so£¬²¢ÇÒÔÚAddmoduleÖÐÓÐAddmodule mod_rewrite.c£¬Ôò¿ÉÒÔʹÓÃÖØÐ´¹æÔò¡£

---- µ±ÍⲿÇëÇóµ½´ïApache£¬Apacheµ÷ÓÃÖØÐ´¹æÔòÖе͍ÒåÀ´ÖØÐ´ÓÉÓû§ä¯ÀÀÆ÷Ö¸¶¨ÇëÇóµÄURL£¬×îºó±»ÖØÐ´µÄURLÈç¹ûÊÇÖØ¶¨Ïò£¬ÔòËͽ»ä¯ÀÀÆ÷×öÔÙÒ»´ÎÇëÇó£»Èç¹ûÊÇ´úÀíÔò°ÑÖØÐ´ºóµÄURL½»¸ø´úÀíÄ£¿éÇëÇó×îÖÕµÄÄÚÈÝ(Content)£¬×îºó°ÑÄÚÈÝËͻظøä¯ÀÀÆ÷¡£

Îå¡¢ºÎʱʹÓÃ.htaccessÖеÄÖØÐ´¹æÔò¶¨Òå

---- ¼ÙÈçÄú¶ÔÍøÕ¾ÄÚÈÝËùÔڵķþÎñÆ÷ûÓйÜÀíԱȨÏÞ£¬»òÕßÄúµÄÍøÕ¾ÄÚÈÝ·ÅÔÚISPµÄ·þÎñÆ÷ÉÏÍйܣ¬ÎÞ·¨¸ÄдÖ÷ÅäÖÃÎļþ£¬µ«ÊÇÄú¶ÔWebÕ¾µãÄÚÈÝËùÔÚµÄĿ¼ÓÐдȨÏÞ£¬Ôò¿ÉÒÔÉèÖÃ×Ô¼ºµÄ.htaccessÎļþ´ïµ½Í¬ÑùµÄÄ¿µÄ¡£µ«ÄúÐèҪȷ¶¨Ö÷ÅäÖÃÎļþÖжÔÄúµÄÍøÕ¾ËùÔÚµÄĿ¼¶¨ÒåÁËÏÂÃæµÄÄÚÈÝ£¬·ñÔòÄúµÄ.htaccess²»»á¹¤×÷¡£

---- < Directory /usr/local/apache/htdocs/www.abc.com> options indexes followsymLinks
---- allowoverride all
---- < /Directory >

Áù¡¢Ó¦ÓþÙÀý

---- ¼Ù¶¨Apache±»±àÒë°²×°ÔÚÖ÷»ú192.168.1.56µÄ/usr/local/apacheĿ¼ÏÂÃæ£¬Í¬Ê±±àÒëÁËÖØÐ´ºÍ´úÀíÄ£¿é¡£

---- 1£®Òþ²ØApacheϵÄij¸öĿ¼£¬Ê¹µÃ¶Ô¸ÃĿ¼µÄÈκÎÇëÇó¶¼Öض¨Ïòµ½ÁíÒ»¸öÎļþ
---- (1)httpd.confµÄʵÏÖ·½·¨
---- ÎÒÃǽ«ÏÂÃæµÄ²¿·Ö·Åµ½/usr/local/apache/conf/httpd.confÖС£

---- < Directory "/usr/local/apache/htdocs/manual/"> options Indexes followsymlinks
---- allowoverride all
---- rewriteengine on
---- rewritebase /
---- rewriterule ^(.*)$ index.html.en [R=301]
---- < /Directory >

---- ×¢: ¡°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£¬ÏÔÈ»ÊDz»ÕýÈ·µÄ¡£

---- ÎÒÃÇÒ²¿ÉÒÔ²»Óá°rewritebase /¡±£¬¶øÊǽ«Æä¸ÄΪÈçϲ¿·Ö¡£
---- rewriteengine on
---- rewriterule ^(.*)$ /index.html.en [R=301]
---- »òÕ߸ü¸ÄΪ£º
---- rewriteengine on
---- rewriterule ^(.*)$ http://192.168.1.56/index.html.en [R=301]

---- (2).htaccessµÄʵÏÖ·½·¨
---- ÎÒÃǽ«ÏÂÃæµÄ²¿·Ö·Åµ½httpd.confÖС£

---- < Directory "/usr/local/apache/htdocs/manual/"> options Indexes followsymlinks
---- allowoverride all
---- < /Directory >

---- È»ºó½«ÏÂÃæµÄ²¿·Ö·Åµ½/usr/local/apache/htdocs/manual/.htaccessÖС£
---- rewriteengine on
---- rewritebase /
---- rewriterule ^(.*)$ index.html.en [R=301]

---- ×¢: ¶ÔÎļþ.htaccessËù×öµÄÈκθ͝²»ÐèÒªÖØÆô¶¯Apache¡£

---- Äú»¹¿ÉÒÔÀûÓÃ.htaccess·½°¸½«Õâ¸ömanualÄ¿Â¼ÖØ¶¨Ïòµ½Óû§jephe×Ô¼ºµÄÖ÷Ŀ¼¡£
---- rewriteengine on
---- rewritebase /~jephe/
---- rewriterule ^(.*)$ $1 [R=301]

---- ÕâÑù£¬¶ÔmanualĿ¼ÏÂÈκÎÎļþµÄÇëÇó±»Öض¨Ïòµ½¡«jepheĿ¼ÏÂÏàͬÎļþµÄÇëÇó¡£

---- 2£®½«http://www.username.domain.com¶ÔÓÚusernameµÄÖ÷Ò³ÇëÇóת»»Îª¶Ôhttp://www.domain.com/usernameµÄÇëÇó
---- ¶ÔÓÚHTTP/1.1µÄÇëÇó°üÀ¨Ò»¸öHost: HTTPÍ·£¬ÎÒÃÇÄÜÓÃÏÂÃæµÄ¹æÔò¼¯ÖØÐ´http://www.username.domain .com/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
---- < Virtualhost 1.2.3.4:80 > servername www.domain.com
---- rewriteengine on
---- proxyrequest on
---- rewriterule ^/(.*)$ http://192.168.1.3/$1 [P,L]
---- < /Virtualhost >

---- ×¢: µ±Íⲿä¯ÀÀÆ÷ÇëÇóhttp://www.domain.comʱ£¬½«±»½âÎöµ½IPµØÖ·1.2.3.4£¬Apache½»ÓÉmod_rewrite´¦Àí£¬×ª»»³Éhttp://192.168.1.3/$1ºóÔÙ½»ÓÉ´úÀíÄ£¿émod_proxy£¬µÃµ½ÄÚÈݺó´«ËÍ»ØÓû§µÄä¯ÀÀÆ÷¡£

---- 4£®»ù±¾Ô¤ÏÈÉ趨µÄת»»Map±í½øÐÐÖØÐ´rewritemap
---- ת»»http://www.domain.com/{countrycode}/anypathµ½Map±íÖй涨µÄURL£¬Ç°ÃæÊÇÐéÄâÖ÷»úÖе͍Òå¡£
---- 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/} [R=301,L]
---- Îļþ/usr/local/apache/conf/rewrite.mapµÄÄÚÈÝÈçÏÂ:
---- sg http://a.b.c.d/
---- sh http://e.f.g.h/

---- ×¢: µ±Óû§ÇëÇóhttp://www.domain.com/sg/anypathʱ±»ÖØÐ´Îªhttp://a.b.c.d/anypath¡£µ±ÐèÒªµ÷ÊÔʱÇëÓÃrewritelogºÍ rewriteloglevel 9ÁªºÏ£¬9Ϊ×î´ó£¬¼´µÃµ½×î¶àµÄµ÷ÊÔÐÅÏ¢£»×îСΪ1£¬±íʾµÃµ½×îÉٵĵ÷ÊÔÐÅÏ¢£»Ä¬ÈÏΪ0£¬±íʾûÓе÷ÊÔÐÅÏ¢¡£

---- sitemapµÄÓï·¨ÊÇ${sitemap: LookupKey | Defaultvalue}£¬ÓÐЩÊéÉϰÑ$д³ÉÁË%ÊÇ´íÎóµÄ¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ