2014-09-30 25 views
5

Tôi đang sử dụng một phiên bản wamp 2.5 My Apache là 2.4.9 PHP: 5.5.12 MySQL: 5.6.17WAMP Virtual Host không làm việc

tôi có các cấu hình này:

On httpd.conf của tôi

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

On tôi G:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhost.conf

# Virtual Hosts 
# 
# Required modules: mod_log_config 

# If you want to maintain multiple domains/hostnames on your 
# machine you can setup VirtualHost containers for them. Most configurations 
# use only name-based virtual hosts so the server doesn't need to worry about 
# IP addresses. This is indicated by the asterisks in the directives below. 
# 
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/> 
# for further details before you try to setup virtual hosts. 
# 
# You may use the command line option '-S' to verify your virtual host 
# configuration. 
# 


# 
# VirtualHost example: 
# Almost any Apache directive may go into a VirtualHost container. 
# The first VirtualHost section is used for all requests that do not 
# match a ServerName or ServerAlias in any <VirtualHost> block. 
# 


<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "g:/Apache24/docs/dummy-host.example.com" 
    ServerName dummy-host.example.com 
    ServerAlias www.dummy-host.example.com 
    ErrorLog "logs/dummy-host.example.com-error.log" 
    CustomLog "logs/dummy-host.example.com-access.log" common 
</VirtualHost> 

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "g:/Apache24/docs/dummy-host2.example.com" 
    ServerName dummy-host2.example.com 
    ErrorLog "logs/dummy-host2.example.com-error.log" 
    CustomLog "logs/dummy-host2.example.com-access.log" common 
</VirtualHost> 


<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "g:/wamp/www" 
    ServerName localhost 
    ErrorLog "logs/localhost-error.log" 
    CustomLog "logs/localhost-access.log" common 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "g:\wamp\www\mysite\public" 
    ServerName mysite.dev 
</VirtualHost> 

On tôi c:\Windows\System32\Drivers\etc\hosts

# localhost name resolution is handled within DNS itself. 
127.0.0.1 localhost 
127.0.0.1 mysite.dev 
# ::1  localhost 

tôi cố gắng truy cập vào dự án của tôi sử dụng URL này: http://www.mysite.dev/NHƯNG Tôi nhận được một Server not found error Tôi đã cố gắng truy cập vào nó bằng cách sử www.mysite.dev, http://mysite.dev nhưng vẫn có một may mắn!

Máy chủ ảo của tôi đã hoạt động trước nhưng tôi không chắc chắn lý do tại sao nó không hoạt động ngay bây giờ. Một số thứ kỳ lạ đang diễn ra.

Tôi không chắc chắn điều gì đang xảy ra. Bất cứ ý tưởng sẽ được đánh giá cao!

Cảm ơn!

+0

Bạn đã thử một cái gì đó như [this] (http://stackoverflow.com/a/11154840/2518525)? – Darren

+0

Trong url chỉ sử dụng mysite.dev. và kiểm tra –

+0

Và cũng kiểm tra trong mysite \ public của bạn là có index.php? –

Trả lời

-1

thử này đến bạn apache httpd.config file:

<VirtualHost *:80> 
     ServerName mysite.dev 
     DocumentRoot "g:\wamp\www\mysite\public" 
    SetEnv APPLICATION_ENV "development" 

    <Directory "g:\wamp\www\mysite\public"> 
     DirectoryIndex index.php 
     Options All Includes Indexes 
     Options All Indexes FollowSymLinks 
     Order allow,deny 
     Allow from all 
     Require all granted 
    </Directory> 
    </VirtualHost> 

khởi động lại máy chủ wamp của bạn và đặt url như mysite.dev/ trên trình duyệt của bạn. hy vọng nó sẽ giúp bạn. cảm ơn bạn.

10

Trước tiên, bạn cần xóa ví dụ giả định định nghĩa từ tệp vhost-httpd.conf của mình. Chúng có các ví dụ chỉ chỉ để bạn bắt đầu với cú pháp và không nên ở trong một hoạt động conf/extra/httpd-vhosts.conf khi chúng trỏ đến các thư mục không tồn tại.

Vì vậy, loại bỏ 2 định nghĩa những từ file:

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "g:/Apache24/docs/dummy-host.example.com" 
    ServerName dummy-host.example.com 
    ServerAlias www.dummy-host.example.com 
    ErrorLog "logs/dummy-host.example.com-error.log" 
    CustomLog "logs/dummy-host.example.com-access.log" common 
</VirtualHost> 

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    DocumentRoot "g:/Apache24/docs/dummy-host2.example.com" 
    ServerName dummy-host2.example.com 
    ErrorLog "logs/dummy-host2.example.com-error.log" 
    CustomLog "logs/dummy-host2.example.com-access.log" common 
</VirtualHost> 

Second Apache 2.4.x là IPV4 (127.0.0.1) và IPV6 (:: 1) biết nên tập hosts của bạn sẽ giống như thế này với các định nghĩa cho cả hai phiên bản IPV4 và IPV6 cho mỗi trang web. Trình duyệt có thể tự ý sử dụng hoặc vì vậy bạn cần cả hai nhưng có lẽ sẽ sử dụng mạng IPV6 ưu tiên IPV4 nếu cả hai đều thực sự hoạt động trên PC của bạn.

127.0.0.1 localhost 
::1 localhost 

127.0.0.1 mysite.dev 
::1 mysite.dev 

Bây giờ trên 2 máy chủ ảo mà thực sự tồn tại trên hệ thống của bạn cố gắng này là định nghĩa chủ ảo:

<VirtualHost *:80> 
    DocumentRoot "g:/wamp/www" 
    ServerName localhost 
    ServerAlias localhost 
    ErrorLog "logs/localhost-error.log" 
    CustomLog "logs/localhost-access.log" common 
    <Directory "G:/wamp/www"> 
     AllowOverride All 
     Options Indexes FollowSymLinks 
     Require local 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    DocumentRoot "g:\wamp\www\mysite\public" 
    ServerName mysite.dev 
    ServerAlias www.mysite.dev 
    ErrorLog "logs/mysite-error.log" 
    CustomLog "logs/mysite-access.log" common 
    <Directory "G:/wamp/www/mysite/public"> 
     AllowOverride All 
     Options Indexes FollowSymLinks 
     Require local 
    </Directory> 
</VirtualHost> 

Phần <Directory>....</Directory> trong phần <VirtualHost>....</VirtualHost> nói với Apache mà IP Addresses nó được phép chấp nhận các kết nối từ, do đó, sử dụng cú pháp Apache 2.4 Require local giới hạn quyền truy cập để chỉ PC chạy WAMPServer tức là Apache có thể kết nối với bất kỳ trang web nào trong số này.

Tránh trộn lẫn cú pháp Apache 2.2 và cú pháp Apache 2.4 cùng nhau trong cùng một định nghĩa.Vì vậy, không sử dụng

Order Allow,Deny 
Allow from all 

Require all granted 

trong định nghĩa tương tự. Bạn đang sử dụng Apache 2.4 để sử dụng cú pháp Apache 2.4.

Nếu bạn thấy bạn muốn cho phép máy tính khác trong mạng nội bộ xem trang web của bạn, ví dụ như bạn đời công việc hoặc trẻ em, bạn có thể thêm cú pháp này vào một hoặc nhiều định nghĩa Máy chủ ảo của bạn.

Cho phép chỉ là một máy tính khác duy nhất vào trang web của bạn

Require local 
Require ip 192.168.1.100 

hoặc 2 khác PC của

Require local 
Require ip 192.168.1.100, 192.168.1.101 

Hoặc cho mọi người trên mạng nội bộ của bạn chỉ cần sử dụng 3 đầu tiên trong 4 tứ phân vị của ip địa chỉ nhà.

Require ip 192.168.1 

Cũng tránh sử dụng cú pháp cho phép truy cập từ bất cứ nơi nào tức là

Require all granted <--Apache 2.4 syntax 

or 

Order Allow,Deny  <-- Apache 2.2 syntax 
Allow from all  

Nó có thể giải quyết vấn đề của bạn trong thời gian ngắn, nhưng chỉ là chờ đợi để bắt bạn đôi khi sau khi bạn quyết định bạn muốn hiển thị trang web của bạn cho một người bạn/khách hàng/sếp. Nếu bạn đến giai đoạn Chuyển tiếp cổng bạn định tuyến để thế giới được phép vào mạng của bạn, điều này có thể gây ra TẤT CẢ CÁC TRANG WEB của bạn để trở nên có sẵn cho mọi người.

Tốt hơn để thay đổi ONE Máy chủ ảo Định nghĩa cho MỘT trang web bạn muốn mọi người xem để thử nghiệm/khoe khoang từ Require local đến Require all granted và chỉ cho phép trang web đó truy cập từ internet.

Khi bạn đã thực hiện tất cả những thay đổi này, hãy nhớ khởi động lại Apache.

Ngoài ra nếu bạn thay đổi tệp máy chủ để làm cho hoạt động chnages bạn nên khởi động lại hoặc chạy các lệnh này từ dòng lệnh của cửa sổ lệnh bắt đầu là tùy chọn Runs as Administrator.

net stop dnscache 
net start dnscache 
+0

Ôi trời ơi, tôi không chắc ai thực sự làm việc. :: 1 và sự khác biệt về cú pháp trong các phiên bản bởi vì tôi đã thực hiện hai thay đổi (tập tin host IP6 và chỉnh sửa cú pháp cấu hình 2.4). Tôi đã đấu tranh rất nhiều từ tuần (mà tôi đã kết thúc không sử dụng máy chủ ảo nhưng chuyển đổi các trang web khi cần thiết). Cảm ơn rất nhiều –

+0

Cảm ơn rất nhiều, thêm :: 1 vào tập tin lưu trữ của tôi giải quyết vấn đề! –

+0

Thông tin thú vị! – CrashBurn

0

Kiểm tra module này uncomment trong httpd.conf

  • proxy_module
  • proxy_http_module
2

Sau đây là làm việc cho tôi

1

tôi sửa chữa các p cùng roblem bởi uncomment một số dòng trong httpd.conf trong thư mục Apache.

dòng bỏ chú thích dưới đây:

Include conf/extra/httpd-vhosts.conf 
LoadModule vhost_alias_module modules/mod_vhost_alias.so 

Lưu file và khởi động lại Apache của bạn và nó sẽ làm việc. Rất cám ơn đến anh chàng này: https://john-dugan.com/wamp-vhost-setup/

2

Do Google mua lại .dev gTLD, có .dev trang web phát triển không còn dễ dàng có thể, cách tốt nhất để giảm thiểu là chỉ cần đổi tên miền phát triển của bạn vào .local hoặc một cái gì đó mà bạn thích hơn.

Điều gì xảy ra ở chế độ nền là máy chủ DNS cục bộ chuyển hướng trình duyệt đến 127.0.53.53 (mở cmd> nslookup yourdomain.dev) để thông báo cho người dùng cuối .dev gTLD đang được mua lại. Vì miền .dev trong tệp máy chủ được đặt thành 127.0.0.1, nó cho thấy kết nối bị từ chối.

Bạn có thể thay đổi 127.0.0.1 thành 127.0.53.53 trong tệp máy chủ và thấy rằng lỗi trình duyệt thay đổi từ ERR_CONNECTION_REFUSED thành ERR_ICANN_NAME_COLLISION.

Các vấn đề liên quan