ลิงก์โครงการไม่ทำงานบนเซิร์ฟเวอร์ Wamp


88

ฉันกำลังติดตั้ง Wamp Server บนคอมพิวเตอร์เครื่องอื่นเพื่อเรียกใช้ฐานข้อมูลและ UI ขนาดกลาง ฉันประสบความสำเร็จในการบล็อก IIS และกำหนดเส้นทางเซิร์ฟเวอร์ไปยัง Localhost: 8080 แต่เมื่อใดก็ตามที่ฉันพยายามเข้าถึงโครงการของฉันจากโฮมเพจ localhost ในไฟล์ www; ฉันได้รับการเปลี่ยนเส้นทางไปยังหน้าไม่พบข้อผิดพลาด

เมื่อฉันวางเมาส์เหนือลิงก์ไดเรกทอรีจะปรากฏขึ้น "http: // ProjectFolderNameHere /" เสมอ เมื่อมันควรจะเป็น "http: // LocalHost: 8080 / ProjectFolderNameHere /" ฉันจะทำอย่างไรเพื่อให้ลิงก์ทำงานอย่างถูกต้อง

เครื่องของฉันทำงานบน Windows 7 Home Edition 64 บิตและฉันปิดใช้งาน IIS ของ Microsoft แล้ว


คุณสามารถเข้าถึง localhost: 8080 / index.html (สมมติว่าคุณมี)? ลิงก์ถูกเก็บไว้ที่ใดซึ่งแสดง URL ที่เสียเหล่านั้น ใครเป็นคนเขียน? ดูเหมือนว่าลิงก์เหล่านั้นจะเขียนไม่ดี
Patrick

ไม่ แต่ฉันพยายามเชื่อมต่อกับไฟล์ของฉันทั้งหมดตั้งค่าไว้ที่นี่ขอบคุณ!
user3638431

หากคุณพบวิธีแก้ปัญหาให้ตอบคำถามของคุณเองเพื่อใช้อ้างอิงในอนาคต :)
Patrick

ตกลงสิ่งที่ฉันทำคือฉันรับคำแนะนำของ Patrick แต่ฉันพิมพ์ใน localhost: 8080 / ProjectFilename และในที่สุดก็สามารถเข้าถึงโครงการของฉันได้ ปัญหาของฉันยังคงอยู่ แต่ฉันพบวิธีแก้ไขแล้ว
user3638431

ฉันเชื่อว่าลิงก์ของคุณ (ที่คุณคลิก) เขียนผิด หากคุณสามารถเข้าใจได้มากขึ้นว่าคุณจะไปที่ลิงก์เหล่านั้นได้อย่างไรพวกเขาเขียนไว้ที่ไหนก่อนที่คุณจะ 'คลิก' ฉันสามารถช่วยเพิ่มเติมได้
แพทริค

คำตอบ:


161

วิธีสร้าง Virtual Host ใน WampServer


WAMPServer 3 ทำให้กระบวนการนี้ง่ายขึ้นมาก!

คุณสามารถทำเกือบทุกอย่างจากยูทิลิตี้ที่ให้ไว้เป็นส่วนหนึ่งของ WAMPServer

  • สร้างโฟลเดอร์ภายในเพื่อบรรจุ project.site ของคุณ ซึ่งสามารถอยู่ภายใต้C:\wamp\www\ไดเร็กทอรีหรือในโฟลเดอร์ที่แยกจากกันอย่างสมบูรณ์เช่นC:\websites.

  • สร้างโฟลเดอร์ภายในตำแหน่งที่คุณเลือก EG C:\websites\project1\wwwหรือภายใต้ไฟล์c:\wamp\www\project1\www

  • ตอนนี้เปิด localhost wampmanager->localhostและคลิกที่ลิงค์Add a Virtual Hostภายใต้ส่วน TOOLS ในหน้าแรก

คุณจะเห็นหน้าดังนี้:

ใส่คำอธิบายภาพที่นี่

  • กรอกข้อมูลในฟิลด์ตามที่ระบุโดยคำแนะนำด้านบนแต่ละฟิลด์

  • การกำหนดค่าโฮสต์เสมือนจะถูกสร้างขึ้นสำหรับคุณ

  • ตอนนี้คุณต้องรีสตาร์ท DNS Cache คุณสามารถทำเช่นนี้ได้จากเมนู wampmanager right click wampmanager->Tools->Restart DNSเช่นนี้ DNS Cache จะถูกรีสตาร์ทจากนั้น Apache ก็จะหยุดทำงานและรีสตาร์ท เมื่อไอคอน wampmanager เป็นสีเขียวอีกครั้งทั้งหมดเสร็จสมบูรณ์

  • ตอนนี้คุณต้องสร้างindex.phpไฟล์ง่ายๆหรือติดตั้งไซต์ของคุณลงในโฟลเดอร์ที่คุณสร้างไว้ด้านบน

  • สมมติว่า VH ของคุณถูกเรียกproject.devคุณควรจะเห็นชื่อนั้นภายใต้ส่วนโฮสต์เสมือนของคุณในหน้าแรกของ WAMPServer

  • คุณสามารถเปิดไซต์ได้จากเมนูนี้หรือเพียงแค่ใช้ชื่อโดเมนใหม่ในแถบที่อยู่ EG project1.devและการเปิดตัวไซต์ shoudl


กลไก WAMPServer 2.5 รุ่นเก่าหรือหากคุณต้องการทำทั้งหมดด้วยตนเอง

มีการเปลี่ยนแปลงแนวคิดใน WampServer 2.5 ขึ้นไปและมีเหตุผลที่ดีสำหรับการเปลี่ยนแปลงนี้!

ใน WampServer ตอนนี้ได้รับการสนับสนุนอย่างยิ่งให้สร้าง Virtual Host สำหรับแต่ละโปรเจ็กต์ของคุณแม้ว่าคุณจะยึดไว้ใน\wamp\www\subfolderโครงสร้างก็ตาม

เอกสารโฮสต์เสมือน

ตัวอย่างโฮสต์เสมือน

หน้าแรกของ WampServer ( \wamp\www\index.php) คาดว่าคุณจะสร้างโฮสต์เสมือนสำหรับโปรเจ็กต์ทั้งหมดของคุณแล้วดังนั้นจะทำงานได้อย่างถูกต้องก็ต่อเมื่อคุณทำเช่นนั้น

ประวัติศาสตร์

เพื่อให้ชีวิตง่ายขึ้นสำหรับผู้เริ่มต้นใช้ WampServer ในการเรียนรู้ PHP Apache และ MySQL ขอแนะนำให้คุณสร้างโฟลเดอร์ย่อยภายใต้\wamp\www\โฟลเดอร์

wamp
  |-- www
       |-- Chapter1
       |-- Chapter2
       |-- etc

โฟลเดอร์ย่อยเหล่านี้จะแสดงให้เห็นการเชื่อมโยงใน WampServer โฮมเพจภายใต้เมนูที่เรียกว่า 'โครงการของคุณ' localhost/subfoldernameและการเชื่อมโยงเหล่านี้จะมีการเชื่อมโยงไปยัง

ยอมรับได้สำหรับบทช่วยสอนง่ายๆเท่านั้น

สิ่งนี้ทำให้ชีวิตเป็นเรื่องง่ายสำหรับผู้เริ่มต้นที่สมบูรณ์และเป็นที่ยอมรับอย่างสมบูรณ์เช่นสำหรับบทแนะนำต่อไปนี้เพื่อเรียนรู้การเข้ารหัส PHP อย่างไรก็ตามไม่เคยมีไว้สำหรับใช้ในการพัฒนาเว็บไซต์จริงซึ่งคุณต้องการคัดลอกไปยังเซิร์ฟเวอร์ที่โฮสต์จริงในภายหลัง ในความเป็นจริงหากคุณใช้กลไกนี้มักทำให้เกิดปัญหาเนื่องจากการกำหนดค่าไซต์ที่ใช้งานจริงไม่ตรงกับการกำหนดค่าการพัฒนาของคุณ

ปัญหาสำหรับการพัฒนาเว็บไซต์จริง

เหตุผลนี้แน่นอนว่าการตั้งค่า DocumentRoot เริ่มต้นสำหรับ wamp คือ

DocumentRoot "c:/wamp/www/"

ไม่ว่าโฟลเดอร์ย่อยของคุณจะถูกเรียกว่าอะไร สิ่งนี้กล่าวถึงบ่อยครั้งที่ใช้โค้ด PHP ที่สอบถามโครงสร้างหรือไซต์ของคุณได้รับข้อมูลที่แตกต่างกันเมื่อทำงานบน WampServer การพัฒนาของคุณกับสิ่งที่จะได้รับเมื่อทำงานบนเซิร์ฟเวอร์ที่โฮสต์สดซึ่งการกำหนดค่า DocumentRoot จะชี้ไปที่โฟลเดอร์ที่ด้านบนสุดของเว็บไซต์ ลำดับชั้นของไฟล์ โค้ดประเภทนี้มีอยู่ในหลายเฟรมเวิร์กและ CMS เช่น WordPress และ Joomla เป็นต้น

ตัวอย่างเช่น

สมมติว่าเรามีโครงการที่เรียกว่า project1 ที่จัดขึ้นwamp\www\project1และดำเนินการไม่ถูกต้องในชื่อlocalhost/project1/index.php

นี่คือสิ่งที่จะรายงานโดยคำสั่ง PHP ที่เป็นปัญหา:

$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www

ตอนนี้ถ้าเรากำหนดไซต์นั้นอย่างถูกต้องโดยใช้นิยามโฮสต์เสมือนและเรียกใช้เนื่องจากhttp://project1ผลลัพธ์บนไซต์การพัฒนาเซิร์ฟเวอร์ WAMPServer จะตรงกับที่ได้รับเมื่ออยู่ในสภาพแวดล้อมที่โฮสต์สด

$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1

ตอนนี้ความแตกต่างนี้อาจดูเหมือนเล็กน้อยในตอนแรก แต่ถ้าคุณใช้เฟรมเวิร์กเช่น WordPress หรือหนึ่งใน CMS เช่น Joomla สิ่งนี้สามารถและทำให้เกิดปัญหาเมื่อคุณย้ายไซต์ของคุณไปยังเซิร์ฟเวอร์ที่ใช้งานจริง

วิธีสร้าง Virtual Host ใน WampServer

จริงๆแล้วสิ่งนี้ควรใช้งานได้เหมือนกันสำหรับเซิร์ฟเวอร์ wndows Apache ใด ๆ โดยมีความแตกต่างเฉพาะที่คุณอาจพบไฟล์กำหนดค่า Apache

มี 3 ขั้นตอนในการสร้าง Virtual Host แรกของคุณใน Apache และมีเพียง 2 ขั้นตอนหากคุณได้กำหนดไว้แล้ว

  1. สร้างนิยามโฮสต์เสมือน
  2. เพิ่มชื่อโดเมนใหม่ของคุณในไฟล์ HOSTS
  3. ยกเลิกการใส่เครื่องหมายกำกับบรรทัดใน httpd.conf ที่มีไฟล์นิยาม Virtual Hosts

ขั้นตอนที่ 1สร้างข้อกำหนดโฮสต์เสมือน

แก้ไขไฟล์ที่เรียกว่าhttpd-hosts.confซึ่งสำหรับ WampServer อาศัยอยู่

\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf

(หมายเลขเวอร์ชันของ Apache อาจแตกต่างกันให้มีส่วนร่วมก่อนดำเนินการต่อ)

หากนี่เป็นครั้งแรกที่คุณแก้ไขไฟล์นี้ให้ลบโค้ดตัวอย่างเริ่มต้นออกก็ไม่มีประโยชน์

ฉันสมมติว่าเราต้องการสร้างคำจำกัดความสำหรับไซต์ที่เรียกว่า project1 ที่อาศัยอยู่

\wamp\www\project1

สำคัญมากอันดับแรกเราต้องตรวจสอบให้แน่ใจว่า localhost ยังใช้งานได้นั่นคือนิยาม VHOST แรกที่เราจะใส่ในไฟล์นี้

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "c:/wamp/www">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

ตอนนี้เรากำหนดโครงการของเราและแน่นอนว่าคุณทำกับแต่ละโครงการของคุณเมื่อคุณเริ่มโครงการใหม่

<VirtualHost *:80>
    DocumentRoot "c:/wamp/www/project1"
    ServerName project1
    <Directory  "c:/wamp/www/project1">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

หมายเหตุ: แต่ละโฮสต์เสมือนที่DocumentRootกำหนดเอง นอกจากนี้ยังมีพารามิเตอร์อื่น ๆ อีกมากมายที่คุณสามารถเพิ่มลงในนิยามโฮสต์เสมือนตรวจสอบเอกสาร Apache

กันเล็ก ๆ

วิธีการทำงานของโฮสต์เสมือนใน Apache: คำจำกัดความแรกในไฟล์นี้จะเป็นไซต์เริ่มต้นด้วยดังนั้นหากชื่อโดเมนที่ใช้ในเบราว์เซอร์ไม่ตรงกับโดเมนที่โฮสต์เสมือนจริงที่กำหนดไว้จริงทำให้ localhost เป็นโดเมนแรกในไฟล์จึงจะทำให้ เป็นไซต์ที่โหลดหากมีการพยายามแฮ็กโดยใช้ที่อยู่ IP ของคุณ ดังนั้นหากเรามั่นใจว่าความปลอดภัยของ Apache สำหรับโดเมนนี้ถูกตั้งค่าไว้เสมอ

Require local

การแฮ็กแบบไม่เป็นทางการจากที่อยู่ภายนอกจะได้รับข้อผิดพลาดและไม่เข้าสู่พีซีของคุณ แต่หากคุณสะกดโดเมนผิดคุณจะเห็นหน้าแรกของ WampServer เนื่องจากคุณใช้พีซีเครื่องเดียวกับ WampServer และlocalดังนั้น

ขั้นตอนที่ 2 :

เพิ่มชื่อโดเมนใหม่ของคุณในไฟล์ HOSTS ตอนนี้เราต้องเพิ่มชื่อโดเมนที่เราใช้ในนิยามโฮสต์เสมือนลงในไฟล์ HOSTS เพื่อให้ windows ทราบว่าจะหาได้จากที่ใด สิ่งนี้คล้ายกับการสร้างระเบียน DNS A แต่จะมองเห็นได้เฉพาะในพีซีเครื่องนี้เท่านั้น

แก้ไข C:\windows\system32\drivers\etc\hosts

ไฟล์ไม่มีนามสกุลและควรเป็นแบบนั้น ระวังแผ่นจดบันทึกเพราะอาจลองและเพิ่ม.txtส่วนขยายหากคุณไม่มีตัวแก้ไขที่ดีกว่า ฉันขอแนะนำให้คุณดาวน์โหลด Notepad ++ ซึ่งเป็นโปรแกรมแก้ไขฟรีและดีมาก

นอกจากนี้ไฟล์นี้เป็นไฟล์ที่ได้รับการป้องกันดังนั้นคุณต้องแก้ไขด้วยสิทธิ์ของผู้ดูแลระบบดังนั้นเปิดตัวแก้ไขโดยใช้ตัวเลือกเมนูRun as Administrator

ไฟล์โฮสต์ควรมีลักษณะเช่นนี้เมื่อคุณแก้ไขเสร็จแล้ว

127.0.0.1 localhost
127.0.0.1 project1

::1 localhost
::1 project1

โปรดทราบว่าคุณควรมีคำจำกัดความที่นี่สำหรับที่อยู่ลูปแบ็ค IPV4 127.0.0.1และที่อยู่ลูปแบ็ค IPV6 ::1เนื่องจากขณะนี้ Apache รับรู้ IPV6 แล้วและเบราว์เซอร์จะใช้ IPV4 หรือ IPV6 หรือทั้งสองอย่าง ฉันไม่รู้ว่าจะตัดสินใจว่าจะใช้อย่างไร แต่สามารถใช้ได้ทั้งในกรณีที่คุณเปิดสแต็ก IPV6 ไว้และระบบปฏิบัติการของหน้าต่างส่วนใหญ่จะทำเหมือน XP SP3

ตอนนี้เราต้องบอกให้ windows รีเฟรชแคชชื่อโดเมนดังนั้นให้เปิดหน้าต่างคำสั่งอีกครั้งโดยใช้ตัวเลือกเมนูRun as Administratorอีกครั้งและทำสิ่งต่อไปนี้

net stop dnscache
net start dnscache

project1กองกำลังนี้หน้าต่างเพื่อล้างแคชชื่อโดเมนและโหลดมันในการโหลดมันจะอีกครั้งอ่านไฟล์โฮสต์ดังนั้นตอนนี้มันรู้เกี่ยวกับโดเมน

ขั้นตอนที่ 3 : ยกเลิกการใส่ข้อคิดเห็นบรรทัดใน httpd.conf ที่มีไฟล์นิยามโฮสต์เสมือน

แก้ไข httpd.conf ของคุณใช้เมนู wampmanager.exe เพื่อให้แน่ใจว่าคุณแก้ไขไฟล์ที่ถูกต้อง

ค้นหาบรรทัดนี้ใน httpd.conf

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf

และเพียงแค่ลบ#เพื่อยกเลิกการแสดงความคิดเห็นบรรทัดนั้น

ในการเปิดใช้งานการเปลี่ยนแปลงนี้ในขณะที่คุณเรียกใช้ Apache เราต้องหยุดและเริ่มบริการ Apache ใหม่

wampmanager.exe -> Apache -> Service -> Restart Service

ตอนนี้ถ้าไอคอน WAMP ในซิสเต็มเทรย์ไม่เป็นสีเขียวอีกแสดงว่าคุณอาจทำบางอย่างผิดพลาดใน\wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.confไฟล์

หากเป็นเช่นนั้นนี่เป็นกลไกที่มีประโยชน์ในการค้นหาว่ามีอะไรผิดปกติ มันใช้คุณสมบัติของ Apache exe (httpd.exe) เพื่อตรวจสอบไฟล์กำหนดค่าและรายงานข้อผิดพลาดตามชื่อไฟล์และหมายเลขบรรทัด

เปิดหน้าต่างคำสั่ง

cd \wamp\bin\apache\apache2.4.9\bin
httpd -t

ดังนั้นแก้ไขข้อผิดพลาดและทดสอบอีกครั้งจนกว่าคุณจะได้ผลลัพธ์

Syntax OK

ตอนนี้มีอีกอย่างหนึ่ง

มีรายการเมนูใหม่ 2 รายการในระบบเมนู wampmanager โครงการหนึ่งเรียกว่า'โครงการของฉัน'ซึ่งจะเปิดไว้โดยค่าเริ่มต้น และอันที่สองเรียกว่า'My Virtual Hosts'ซึ่งไม่ได้เปิดใช้งานตามค่าเริ่มต้น

'โครงการของฉัน' จะแสดงรายการไดเรกทอรีย่อยของไดเรกทอรี \ wamp \ www และให้ลิงก์เพื่อเปิดไซต์ในไดเรกทอรีย่อยนั้น ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้มันเปิดตัว 'project1' และไม่ใช่ 'localhost / project1' ดังนั้นเพื่อให้ลิงก์ใช้งานได้เราต้องสร้างคำจำกัดความของโฮสต์เสมือนเพื่อให้ลิงก์นี้เปิดไซต์นั้นในเบราว์เซอร์ของคุณโดยไม่มีข้อกำหนดโฮสต์เสมือน เปิดการค้นหาเว็บสำหรับชื่อไซต์เป็นคำหลักหรือเพียงแค่ส่งคืนเงื่อนไขที่ไม่พบไซต์

รายการเมนู 'โฮสต์เสมือนของฉัน' แตกต่างกันเล็กน้อย มันค้นหาไฟล์ที่ใช้ในการกำหนด Virtual Hosts (เราจะไปถึงนั้นในไม่กี่นาที) และสร้างลิงก์เมนูสำหรับพารามิเตอร์ ServerName แต่ละตัวที่พบและสร้างรายการเมนูสำหรับแต่ละรายการ สิ่งนี้อาจดูสับสนเล็กน้อยเมื่อเราสร้างคำจำกัดความโฮสต์เสมือนสำหรับไดเรกทอรีย่อยของโฟลเดอร์ \ wamp \ www บางรายการจะปรากฏในเมนู "โครงการของฉัน" และเมนู "โฮสต์เสมือนของฉัน"

ฉันจะเปิดเมนู 'โฮสต์เสมือนของฉัน' อื่น ๆ ได้อย่างไร

  • สำรองข้อมูลไฟล์ \ wamp \ wampmanager.tpl ในกรณีที่คุณทำผิดพลาดไฟล์นี้เป็นไฟล์ที่สำคัญมาก
  • แก้ไข \ wamp \ wampmanager.tpl
  • ค้นหาพารามิเตอร์นี้;WAMPPROJECTSUBMENUในส่วน "[Menu.Left]"
  • เพิ่มพารามิเตอร์ใหม่นี้;WAMPVHOSTSUBMENUก่อนหรือหลัง;WAMPPROJECTSUBMENUพารามิเตอร์
  • บันทึกไฟล์
  • ตอนนี้คลิกขวาที่ไอคอน wampmanager แล้วเลือก 'รีเฟรช' หากไม่ได้เพิ่มเมนูให้ "ออก" และรีสตาร์ท wampmanager

Big Note เมนูใหม่จะปรากฏก็ต่อเมื่อคุณได้กำหนด Virtual Hosts ไว้แล้ว! มิฉะนั้นคุณจะไม่เห็นความแตกต่างจนกว่าคุณจะกำหนด VHOST

ตอนนี้ถ้าคุณนำสิ่งนี้ไปใช้กับส่วนขยายเชิงตรรกะ

ตอนนี้คุณสามารถย้ายโค้ดเว็บไซต์ของคุณออกนอก\wamp\โครงสร้างโฟลเดอร์ได้อย่างสมบูรณ์เพียงแค่เปลี่ยนพารามิเตอร์ DocumentRoot ในข้อกำหนด VHOST ตัวอย่างเช่นคุณสามารถทำได้:

สร้างโฟลเดอร์บนดิสก์ wamp หรือดิสก์อื่น ๆ (ระวังไดรฟ์เครือข่ายมันจะซับซ้อนกว่านี้เล็กน้อย)

D:
MD websites
CD websites
MD example.com
CD example.com
MD www

ตอนนี้คุณคัดลอกโค้ดไซต์ของคุณไปที่หรือเริ่มสร้างใน\websites\example.com\wwwโฟลเดอร์และกำหนด VHOST ของคุณดังนี้:

<VirtualHost *:80>
    DocumentRoot "d:/websites/example.com/www"
    ServerName example.dev
    ServerAlias www.example.dev
    <Directory  "d:/websites/example.com/www">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    php_flag display_errors Off
    php_flag log_errors On

    php_value max_upload_size 40M
    php_value max_execution_time 60
    php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>

จากนั้นเพิ่มโดเมนการพัฒนาใหม่นี้ลงในไฟล์ HOSTS:

127.0.0.1 localhost
::1 localhost

127.0.0.1 project1
::1 project1

127.0.0.1 example.dev
::1 example.dev

หมายเหตุ: ไม่ควรใช้ ServerName หรือ ServerAlias ​​ที่เหมือนกับชื่อโดเมนที่ใช้งานจริงของคุณราวกับว่าเราใช้ example.com เป็น ServerName นั่นหมายความว่าเราไม่สามารถเข้าถึงไซต์จริงได้อีกต่อไปจากสิ่งนี้ พีซีตามที่จะนำ example.com ไปที่ 127.0.0.1 เช่นพีซีเครื่องนี้และไม่ออกสู่อินเทอร์เน็ต

นอกจากนี้: ดูว่าฉันได้อนุญาตให้เข้าถึงไซต์นี้จากอินเทอร์เน็ตจากภายในข้อกำหนด VHOST การเปลี่ยนแปลงนี้จะมีผลกับไซต์นี้เท่านั้นและจะไม่มีผลกับไซต์อื่น ๆ มีประโยชน์มากในการอนุญาตให้ไคลเอ็นต์ดูการเปลี่ยนแปลงของคุณเป็นเวลาประมาณหนึ่งชั่วโมงโดยไม่ต้องคัดลอกไปยังเซิร์ฟเวอร์ที่ใช้งานจริง ซึ่งหมายความว่าเราต้องแก้ไขไฟล์นี้ด้วยตนเองเพื่อเปิดและปิดการเข้าถึงนี้แทนที่จะใช้รายการเมนู Put Online / Offline บน wampmanager

นอกจากนี้ฉันได้เพิ่มการแก้ไขบางอย่างในการกำหนดค่า PHP อีกครั้งซึ่งจะใช้กับไซต์นี้เท่านั้น มีประโยชน์มากเมื่อดูแลไซต์ที่มีข้อกำหนดเฉพาะซึ่งแตกต่างจากไซต์อื่น ๆ ที่คุณดูแล ฉันเดาว่าเราสามารถสันนิษฐานได้จากพารามิเตอร์ที่ใช้ว่ามีหน้าเว็บที่ใช้งานได้ยาวนานอยู่ที่ไหนสักแห่งและเขียนได้ไม่ดีมากและจะไม่ทำงานโดยมีข้อผิดพลาดปรากฏบนเบราว์เซอร์โดยไม่ทำให้หน้าเสียหาย ผมเชื่อว่ามีอยู่เว็บไซต์เช่นนี้และผู้คนยังคงต้องการให้พวกเขารักษาไม่ดี แต่หมายความว่าเราต้องเปลี่ยนพารามิเตอร์เหล่านี้สำหรับไซต์เฉพาะนี้เท่านั้นไม่ใช่ทั่วโลกกับไซต์เสมือนทั้งหมดที่ทำงานบน WampServer


มีประโยชน์อย่างมาก นี่ควรเป็นคำตอบที่ยอมรับได้จริงๆ ให้ข้อมูลมากและหากปฏิบัติตามอย่างถูกต้องคุณจะสามารถใช้งานได้ในเวลาประมาณ 10 นาที คำแนะนำที่ดี จุดหนึ่งที่รวดเร็วแม้ว่า ฉันได้รับ. htaccess: ข้อผิดพลาด 'RewriteEngine' ของคำสั่งไม่ถูกต้อง ฉันต้องติ๊ก rewrite_module ภายใต้เมนู Apache Modules มีใครตอบได้ไหมว่าทำไมฉันต้องทำแบบนี้?
คริส

1
rewrite_module ของ @Chris Apache เป็นรหัสที่ให้เอ็นจิ้นการเขียนซ้ำ ถ้าไม่มี apache ไม่รู้จะเขียน url ใหม่ยังไง โดยพื้นฐานแล้วไม่ใช่ส่วนหนึ่งของแกนหลักของ apache แต่เป็นส่วนเสริมสำหรับคำอธิบายที่ดีกว่า
RiggsFolly

"แก้ไขไฟล์ชื่อ httpd-hosts.conf ซึ่งสำหรับ WampServer อยู่ใน \ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-hosts.conf" ในการติดตั้ง wampserver 2.5 ใหม่ของฉันไม่มีไฟล์นี้อยู่ หากคุณหมายถึง httpd-vhosts.conf โปรดแก้ไข
bcsteeve

2
@ starleaf1 คุณต้องการเป็นคำสั่งของเรา! ทำงานlocalhost/add_vhost.phpบน WAMPServer 3 ดูโพสต์นี้ใน WAMPServers Forum
RiggsFolly

1
พูดถึงคำอธิบายเชิงลึก! +1 สำหรับright click wampmanager -> Tools -> Restart DNSเคล็ดลับนี้หลังจากเพิ่มโฮสต์เสมือนใหม่และไม่เข้าใจว่าเหตุใดจึงไม่ทำงาน
Paesano2000

74

ฉันเชื่อว่านี่เป็นทางออกที่ดีที่สุด:

เปิด index.php ในโฟลเดอร์ www และตั้งค่า

เปลี่ยนบรรทัดที่ 30:$suppress_localhost = true;

ถึง $suppress_localhost = false;

เพื่อให้แน่ใจว่าโปรเจ็กต์ถูกนำหน้าด้วย IP / ชื่อโฮสต์ในเครื่องของคุณ


1
ขอบคุณ! แก้ไขปัญหาแล้ว แต่ไอคอน / รูปภาพของเส้นทาง / ไอคอนไม่แสดง blank.git, back.gif, folder.gif แสดงไม่พบ วิธีแก้ปัญหานี้ด้วยหรือไม่?
Shubham Badal

3
ใช่สร้างโฮสต์เสมือนสำหรับแต่ละไซต์ดูคำตอบด้านบนสำหรับวิธีการ
RiggsFolly

1
ขณะนี้มี (WAMPSERVER 3) ตัวเลือกเมนูง่ายๆบน wampmanager เพื่อทำสิ่งนี้หากคุณไม่เข้าใจจริงๆว่ามันคือความคิดที่ไม่ดี right click wampmanager->Wamp Settings->Add localhost to urlสิ่งเดียวที่ดีเกี่ยวกับเรื่องนี้คือคุณสามารถปิดอีกครั้งได้อย่างง่ายดายเมื่อคุณรู้ว่ามันเป็นความคิดที่ไม่ดีในตอนแรก!
RiggsFolly


11

ในการเข้าถึงโปรเจ็กต์จากหน้าแรกคุณต้องสร้างVirtual Hostก่อน

วิธีที่ง่ายที่สุดคือใช้Add a Virtual Host Utility ของ Wamp

เพียงทำตามขั้นตอนเหล่านี้:

  1. สร้างโฟลเดอร์ภายในไดเร็กทอรี"C: \ wamp \ www \"และตั้งชื่อที่คุณต้องการตั้งให้กับไซต์ของคุณเช่น " mysite " ดังนั้นเส้นทางที่จะเป็น"C: \ WAMP \ www \ mysite"
  2. ตอนนี้เปิดหน้าแรกของ localhost ในเบราว์เซอร์ของคุณภายใต้ เมนูเครื่องมือคลิกที่เพิ่มโฮสต์เสมือนการเชื่อมโยง
  3. ป้อนชื่อของโฮสต์เสมือนชื่อนั้นต้องเป็นชื่อของโฟลเดอร์ที่เราสร้างขึ้นภายในwwwไดเรกทอรีเช่น ' mysite '
  4. ป้อนพา ธ สัมบูรณ์ของโฮสต์เสมือนเช่น "C: \ wamp \ www \ mysite \"โดยไม่มีเครื่องหมายคำพูดและคลิกปุ่มด้านล่างเพื่อระบุว่า"เริ่มการสร้าง VirtualHost"ของ
  5. สร้างโฮสต์เสมือนแล้วตอนนี้คุณต้องทำ 'เริ่มต้นใหม่ DNS' โดยคลิกขวาที่ไอคอนเมนูถาดของเซิร์ฟเวอร์ wamp คลิกที่Tools> Restart DNSแล้วปล่อยให้ไอคอนเมนูถาดกลายเป็นสีเขียวอีกครั้ง
  6. ทุกชุด! ตอนนี้เพียงแค่สร้าง'index.php'หน้าภายใน"C: \ WAMP \ www \ mysite \"ไดเรกทอรี เพิ่มรหัสใน'index.php'ไฟล์เช่น
    <?php echo "<h1>Hello World</h1>"; ?>

ตอนนี้คุณสามารถเข้าถึงโปรเจ็กต์ได้จากโฮมเพจของ localhost เพียงคลิกลิงก์โครงการคุณจะเห็นคำว่า "Hello World" พิมพ์อยู่บนหน้าจอ


1
ฉันคิดว่านี่ควรเป็นกันสาดที่ได้รับการยอมรับเพราะฉันมีปัญหาเดียวกันและใช้งานได้!
Nmaster88

1
อันนี้ใหม่ล่าสุดและสมบูรณ์แบบและใช้ได้ผลสำหรับฉัน ขอบคุณ. คำตอบข้างต้นบางคำมีความยาวและล้าสมัย
Junaid

2
นี่ควรเป็นคำตอบที่ได้รับการยอมรับในปัจจุบัน ณ วันที่ 18/4/2017 ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน
rolo

วิธีนี้ใช้งานได้ แต่ virtualhost สำหรับโฟลเดอร์โครงการที่ฉันสร้างขึ้นเช่นไม่ได้เปลี่ยนตัวอย่างภายใต้หัวข้อ "โครงการของคุณ" เป็นลิงก์ .. ทำไมจึงเป็นเช่นนี้
Krys

หากใครมีปัญหาใด ๆ กับโฟลเดอร์โครงการที่ไม่เปลี่ยนจากข้อความสีดำเป็นลิงก์ http ฉันทำตามวิธีเปิดใช้งานอย่างรวดเร็วนี้: เปิด index.php จาก wamp / www / คัดลอกสตริงในบรรทัด 152: <li> <a href = "'. str_replace ('. conf ',' ', $ file).' /"> '. str_replace ('. conf ',' ', $ file).' </a> </li> และแทนที่สตริง <li>. $ ไฟล์ </li> ที่บรรทัด 359 เฮ้โอมเพี้ยง!
Krys

2

วิธีแก้ไขลิงก์ไอคอนเสีย (blank.gif, text.gif ฯลฯ )

น่าเสียดายที่ได้กล่าวไว้ก่อนหน้านี้การเพิ่มโฮสต์เสมือนลงในโปรเจ็กต์ของคุณไม่สามารถแก้ไขลิงก์ไอคอนที่ใช้งานไม่ได้

ปัญหา:

WAMP / Apache ไม่เปลี่ยนการอ้างอิงไดเร็กทอรีสำหรับไอคอนไปยังไดเร็กทอรีการติดตั้งตามลำดับของคุณ โดยตั้งค่าเป็น "c: / Apache24 / icons" แบบคงที่และ 99.9% ของผู้ใช้การติดตั้ง Apache ไม่ได้อยู่ที่นี่ โดยเฉพาะอย่างยิ่งกับ WAMP

การแก้ไข:

  1. ค้นหาไดเรกทอรีไอคอน Apache ของคุณ! โดยทั่วไปจะอยู่ที่นี่: "c: /wamp/bin/apache/apache2.4.9/icons" อย่างไรก็ตามระยะทางของคุณอาจแตกต่างกันไปขึ้นอยู่กับการติดตั้งของคุณและหากเวอร์ชัน Apache ของคุณแตกต่างกันเส้นทางของคุณก็จะแตกต่างกันเช่นกัน \

  2. เปิด httpd-autoindex.conf ในโปรแกรมแก้ไขที่คุณชื่นชอบ โดยปกติไฟล์นี้สามารถพบได้ที่นี่: "C: \ wamp \ bin \ apache \ apache2.4.9 \ conf \ extra \ httpd-autoindex.conf" อีกครั้งหากเวอร์ชัน Apache ของคุณแตกต่างกันเส้นทางนี้ก็จะเป็นเช่นนั้น

  3. ค้นหาคำจำกัดความนี้ (โดยปกติจะอยู่ใกล้ด้านบนสุดของไฟล์):

    Alias /icons/ "c:/Apache24/icons/"
    
    <Directory "c:/Apache24/icons">
    Options Indexes MultiViews
    AllowOverride None
    Require all granted
    </Directory>
    
  4. แทนที่ไดเรกทอรี "c: / Apache24 / icons /" ด้วยของคุณเอง สิ่งสำคัญคุณต้องมีเครื่องหมายทับไปข้างหน้าในการอ้างอิงไดเรกทอรีแรก การอ้างอิงไดเร็กทอรีที่สองต้องไม่มีเครื่องหมายทับ ผลลัพธ์ของคุณควรมีลักษณะคล้ายกันนี้ อีกครั้งไดเรกทอรีของคุณอาจแตกต่างกัน:

    Alias /icons/ "c:/wamp/bin/apache/apache2.4.9/icons/"
    
    <Directory "c:/wamp/bin/apache/apache2.4.9/icons">
    Options Indexes MultiViews
    AllowOverride None
    Require all granted
    </Directory>
    
  5. รีสตาร์ทเซิร์ฟเวอร์ Apache ของคุณและเพลิดเพลินกับไอคอนสุดเจ๋งของคุณ!


ทางออกที่ดีทั่วไปมากขึ้นคือการเปลี่ยนAliasไปAlias /icons/ "icons/"ในรุ่นก่อนที่จะ WampServer 3. ใน WampServer 3 ข้างต้นนี้เป็นค่าเริ่มต้นและไม่มีการเปลี่ยนแปลงเป็นสิ่งจำเป็น
RiggsFolly

2

คุณสามารถทำตามขั้นตอนทั้งหมดโดย @RiggsFolly นั่นเป็นคำตอบที่ดีจริงๆหากคุณไม่ต้องการสร้างโฮสต์เสมือนและต้องการใช้เช่น localhost / ตัวอย่าง / หรือสิ่งที่คล้ายกันก่อนหน้านี้คุณสามารถใช้คำตอบโดย @Arunu

แต่หากคุณยังคงประสบปัญหาโปรดใช้วิธีนี้

  1. ค้นหาโฟลเดอร์ wamp ของคุณ (เช่น c: / Wamp /) ที่คุณติดตั้งไว้
  2. ไปที่ Wamp / www /
  3. เปิดไฟล์ index.php
  4. ค้นหารหัสนี้ $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';
  5. แก้ไขเพิ่ม localhost หลังจาก http: // $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://localhost' : '').$file.'">'.$file.'</a></li>';
  6. รีสตาร์ทเซิร์ฟเวอร์ wamp
  7. เปิด localhost ดูลิงค์ที่อัปเดต

หวังว่าคุณจะมี url ของคุณเหมือนกับเซิร์ฟเวอร์ wamp เวอร์ชันก่อนหน้า


คุณช่วยแนะนำเกี่ยวกับจอบที่เราทำเพื่อ xampp ฉันลองทุกวิธีแล้วไซต์ของฉันยังคงเปลี่ยนเส้นทางไปที่หน้าแรกของ xampp
Sushivam


1

สิ่งนี้ใช้ได้กับ Wamp 3+

  • ไปที่โฟลเดอร์ wamp (wamp / หรือ wamp64 /)
  • เปิด wampmanager.conf
  • ค้นหาพารามิเตอร์ urlAddLocalhost และตั้งค่าเป็น: urlAddLocalhost = "on"

ไม่ควรมีความจำเป็นในการปรับแต่ง index.php ในโฟลเดอร์ www


ฉันได้แก้ไขปัญหานี้แล้วที่นี่: youtu.be/rRwG591fzU8
Ns789

0

Re: ลิงก์ Wampserver LocalHost ทำงานไม่ถูกต้อง
นี่คือข้อมูล ณ เดือนมิถุนายน 2014 กับ Wampserver2.5 (บางทีพวกเขาอาจจะแก้ไขปัญหานี้ในบิลด์ภายหลัง)
หมายเหตุ: หากต้องการใช้ LocalHost: 8080 แทน LocalHost เพียงทำการเปลี่ยนแปลงที่เหมาะสมในการแก้ไขที่กล่าวถึงด้านล่าง

ปัญหานี้มี 2 ประการ -
ประการแรกคือสามารถเข้าถึงรายการภายใต้ "โครงการของคุณ" จากหน้าแรกของ Wamp localhost
ประการที่สองคือสามารถเข้าถึงรายการที่อยู่ในรายการ "โครงการของฉัน" ของแถบงาน Wampserver Icon ได้อย่างถูกต้อง

ในการแก้ไขขั้นแรก (เพื่อให้สามารถเข้าถึงรายการภายใต้ "โครงการของคุณ" จากหน้าแรกของ Wamp localhost) คุณจะต้องทำสิ่งต่อไปนี้ ...

มีการแก้ไข 2 ครั้งที่คุณต้องทำการในไฟล์ index.php ที่อยู่ในโฟลเดอร์ wamp \ www ของคุณ (โดยปกติคือ C: \ wamp \ www)

1) ในบรรทัดที่ 30การเปลี่ยนแปลง

  $suppress_localhost = true;

ถึง

  $suppress_localhost = false;

2) ในบรรทัด 338การเปลี่ยนแปลง

  $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : '').$file.'">'.$file.'</a></li>';

ถึง

  $projectContents .= '<li><a href="'.($suppress_localhost ? 'http://' : 'http://localhost//').$file.'">'.$file.'</a></li>';

หลังจากที่คุณได้ทำการแก้ไขข้างต้นแล้ว - หาก Wampserver กำลังทำงานอยู่เพียงแค่รีเฟรชหน้าโฮสต์ภายในเครื่องและการเปลี่ยนแปลงจะมีผลทันที

ในการแก้ไขรายการที่ 2 (รายการ "โครงการของฉัน" ของแถบงาน Wampserver Icon): คุณต้องแก้ไข C: \ wamp \ scripts \ refresh.php

ค้นหาบรรทัด 651 และเปลี่ยนส่วนของบรรทัดที่อ่าน

   Parameters: "http://'.$projectContents[$i].'/"; Glyph: 5

ถึง

   Parameters: "http://localhost//'.$projectContents[$i].'/"; Glyph: 5

หลังจากคุณทำการเปลี่ยนแปลงชุดที่ 2 แล้วคุณอาจต้องบังคับให้ Wampserver รีเฟรชรายการ "โครงการของฉัน" โดยการสลับตัวเลือกใส่ออนไลน์ / ออฟไลน์ที่ด้านล่างของแอป Wamp Icon Tray


เพื่อนน่ากลัวในที่สุดสิ่งที่ได้ผล! (สำหรับการไปรอบ iis jacking port 80 ทำให้ไซต์ทำงานจากหน้า wamp localhost)
Cammy

-1
  1. ตรวจสอบไอคอนเซิร์ฟเวอร์ wamp เป็นสีเขียวหรือไม่หากเป็นสีเขียวแสดงว่าใช้งานได้หากไม่เป็นเช่นนั้นคุณต้องทำตามขั้นตอนเหล่านี้เพื่อทำ

    ก. ควรปิดโปรแกรมทั้งหมดก่อนที่จะรัน wamp เนื่องจากส่วนใหญ่บางกรณีเช่นโปรแกรม skype ใช้พอร์ตเดียวกัน (80) ซึ่งใช้โดย wamp

    ข. คุณสามารถเปลี่ยนพอร์ตของ skype: Tool-s-> oprions-> advanced-> การเชื่อมต่อโดยไม่เลือกใช้พอร์ต 80

  2. รีสตาร์ท wamp มันจะทำงาน

กรณีที่สอง

  1. เมื่อคุณคลิกที่โปรเจ็กต์ใน loalhost มันจะไม่แสดง localhost ที่อยู่ด้านหน้าของชื่อโปรเจ็กต์และด้วยเหตุนี้ดูเหมือนว่า wamp จะไม่ทำงานคุณจึงต้องทำสิ่งเดียวเท่านั้น

    . ไปที่ไฟล์ wamp index.php และเปลี่ยน $ suppress_localhost = false; จาก $ suppress_localhost = true; หรือลองในทางกลับกันมันจะได้ผล


-1

ไปที่ไดเร็กทอรี www ของคุณ (หากคุณใช้เซิร์ฟเวอร์ wamp) htdocs (ถ้าอยู่บน XAMPP) เปิด admin.php ของคุณและค้นหาเนื้อหาของโปรเจ็กต์ / หรือเพียงแค่ไปที่บรรทัดหมายเลข 339 โดยตรงแล้วเปลี่ยนลิงค์โดยใส่ 'local host ลงในลิงค์

ที่ควรทำงาน,


-1

ฉันคิดว่ามันง่ายกว่ามาก (กว่าคำตอบที่ยอมรับ) ในการสร้างโดเมนย่อยในเครื่องตามโปรเจ็กต์และบอกให้ Apache ให้บริการหลายไซต์ตามชื่อ

ตัวอย่างเช่นสมมติว่าคุณสร้างโครงการภายใต้c:/wamp64/www/sites/mysiteเพื่อให้สามารถเข้าถึงได้ที่http: //mysite.localhostคุณต้องทำสิ่งต่อไปนี้:

1. บอกให้เครื่องของคุณตอบชื่ออื่น Add 127.0.0.1 mysite.localhosttoC:\windows\system32\drivers\etc\hosts

2. ฟลัชแคช DNS ของคุณ เปิด Command Prompt ในฐานะผู้ดูแลและประเภทแล้วnet stop dnscachenet start dnscache

3. บอก Apache ว่าจะดูที่ไหน คลิกที่ไอคอนของ Wamp ในถาดไปที่ Apache -> httpd.conf และเพิ่มสิ่งนี้ในตอนท้าย:

# Tells Apache to identify which site by name
NameVirtualHost *:80
# Tells Apache to serve the default WAMP Server page to "localhost"
<VirtualHost 127.0.0.1>
ServerName localhost
DocumentRoot "C:/wamp/www"
</VirtualHost> 
# Tells Apache to serve Client 1's pages to "client1.localhost"
# Duplicate and modify this block to add another client
<VirtualHost 127.0.0.1>
# The name to respond to
ServerName client1.localhost
# Folder where the files live
DocumentRoot "C:/wamp64/www/sites/mysite"
# A few helpful settings...
<Directory "C:/wamp64/www/sites/mysite">
allow from all
order allow,deny
# Enables .htaccess files for this site
AllowOverride All
</Directory>
# Apache will look for these two files, in this order, if no file is specified in the URL
DirectoryIndex index.html index.php
</VirtualHost> 

(ที่มา )

4. รีสตาร์ท Apache คลิกที่ไอคอนของ Wamp ในถาดเลือก "รีสตาร์ท"

5. กำหนด URL พื้นฐาน ไปที่โฟลเดอร์โครงการของคุณเพิ่ม<base href="http://mysite.localhost" />ในไฟล์<head>ส่วนเพื่อป้องกัน / ลิงก์ไปยังเซิร์ฟเวอร์รูทไม่ให้เสีย

โดยส่วนตัวแล้วฉันฉีดโค้ด html นี้ลงในเทมเพลตของฉันแบบไดนามิกโดยใช้ PHP (บางอย่างเช่น$site_root = (IS_LOCALHOST) ? '<base href="http://mysite.localhost" />' : null;) ดังนั้นฉันจึงไม่ต้องกังวลกับการลบสิ่งนั้นในการผลิต


-3

สวัสดีคุณต้องเปิด index.php จากเซิร์ฟเวอร์ wamp และเปลี่ยน $ suppress_localhost = false; จาก $ suppress_localhost = true; จากนั้น wamp ของคุณจะทำงานได้ดี


2
มีคำตอบมากมายที่บอกตรงนี้
Vael Victus

1
จากนั้นคุณไม่ได้มีส่วนร่วมอะไรเลย
Vael Victus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.