I recently installed XAMPP and got the installation spot-on after a few attempts. I've followed instructions to download a copy of my website (from public_html) and database and got the files under htdoc and set up and imported the database; all well and good.
However, I've been battling a bit with setting up the local virtual host environment, and it is here I think I may have inadvertently screwed something up - Whenever I call my site at localhost/shf21.build, I get the very same; there appears to be a second instance of http// (incorrect, as there is no colon between the p and the first /) somehow infused 'just after the initial https:// (yes, I created an SSL cert/key pair for this site), as follows:
https://**http//**localhost/shf21.build/wp-signup.php?new=localhost
And it is the same on all 4 browsers (Chrome, FireFox, Opera and Edge), enven after clearing browser data and cookies several times.
Other changes I made was in C:\xampp\apache\conf\extra\httpd-vhost.conf and C:\Windows\System32\drivers\etc\hosts as follows:
httpd-vhost.conf
<VirtualHost shf21.build:443>
ServerName shf21.build
DocumentRoot "C:/xampp/htdocs/shf21.build/"
SSLEngine on
SSLCertificateFile "certs/shf21.build/server.crt"
SSLCertificateKeyFile "certs/shf21.build/server.key"
</VirtualHost>
Hosts
127.0.0.1 https:/localhost/shf21.build
I have flushed DNS and reset network settings a few times, to no avail. I do hope there is someone that will be able to assist me in sorting out my dilemma...
Regards Gerhard
Related
I have a version of keycloak running on my AlmaLinux server. This service runs on port 8080. I can access it using <SERVER-IP>:8080. I however, want to access the service using mysubdomain.mymaindomain.com. This way, the user is not confronted with port-numbers, and I suppose using autoSSL is easier (I cannot get it to work on a different port).
I tried multiple things.
The first (I know, very sketchy) was rerouting using htaccess. I made a rewrite condition that looped to localhost:8080. At first glance this worked, but redirects did not work. I suppose this is, since the service thinks it runs on 'localhost:8080' (what it of course does), and thus redirects (on the browser side) to localhost:8080/home for example.
The second thing I tried was adding this code to the virtualhost config file.
I added this using the WHM environment in the server configuration > apache configuration > include editor. There I tried both 'Pre Virtual Host Include' and 'Post Virtual Host Include' (Originating from here).
<VirtualHost *:80>
DocumentRoot "/public_html/keycloak_public"
ServerName mysubdomain.mymaindomain.com
# Other directives here
</VirtualHost>
That did not work, I found out I had to use a proxy. So I appended the following code behind the former part. (Originating from here).
<VirtualHost *:80>
ServerAdmin me#mymaindomain.com
ServerName mysubdomain.mymaindomain.com
ProxyPreserveHost On
# setup the proxy
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
However, when I go to mysubdomain.mymaindomain.com this still loads the empty directory, instead of the equivalent of :8080.
According to the above mentioned thread, I have to enable proxy somehow, but I did not find a way to do so in Cpanel, so I kind of assumed it was enabled (I'm sorry). Can that be the problem, or should I look somewhere else in order to fix this problem?
The solution turned out to be replacing the * with the server-ip!
My Windows 10 pc has xampp installed. I use it for multiple projects so my folder structure is similar to:
xampp
|-htdocs #dummy localhost
|-htdocs-projecta
|-htdocs-projectb
|-etc
I have set up my http-vhosts.conf file and hosts file so that when I go to projecta.dev or projectb.dev then apache returns the correct website.
I have set up my pc to act as a wifi hotspot and connected my iphone to the hotspot. I have configured the wifi connection on my iphone so that my pc acts as a proxy. This means when I go to projecta.dev on my phone I can see the website from my computer.
This is where I am having problems - using this method it appears I can ONLY see websites that are on my computer (ie I am unable to download resources from other websites - such as jQuery or Analytics).
How can I set up my PC and iPhone so I can access the local project domains on my pc from my iphone, as well as having regular internet access to download other scripts?
[edit]
More info:
My vhosts file is configured like this:
<VirtualHost *:80>
DocumentRoot "C:\xampp\htdocs\"
ServerName localhost
<Directory C:\xampp\htdocs>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\xampp\htdocs-projecta\public_html"
ServerName projecta.dev
<Directory C:\xampp\htdocs-projecta>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:\xampp\htdocs-projectb"
ServerName projectb.dev
<Directory C:\xampp\htdocs-projectb>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
...
And my hosts file is:
127.0.0.1 projecta.dev
127.0.0.1 projectb.dev
...
When I access project-a.dev from my phone, it loads the website excluding third-party resources (such as Google Fonts and jQuery). When I go to Google it loads my localhost, with other pages / folders returning a 404. This led me to think the issue is with the vhosts configuration - it can't find a matching server name and is loading the default localhost.
So I changed <VirtualHost *:80> to <VirtualHost projecta.dev:80> but that had no effect. I also added Listen projecta.dev:80 but that also had effect.
How do I set up vhosts to ignore all requests that but those in the vhosts file / with ServerNames?
First, you may check whether your iPhone able to connect to any website or not after you connect to the wifi hotspot, e.g. www.google.com
If yes and you still unable to connect, you may check whether the link of the jquery script is correct or not by try on your laptop. If there having the same problem with your phone, then you inspect element and check whether the script successful download or not. Sometimes, we may put the jquery link wrongly.
If all are ok but the iPhone still cannot download it, I think you may download those jquery script and put into the htdoc folder together with your project. Actually this way can save a lots of time.
Hope this can help you!
I had set up my iphone to have a proxy connection to my pc for ALL requests.
What I had to do was create a .pac file on my pc so, on a per-request basis, it would tell my iphone whether to access my pc as a proxy or connect directly to the resource.
Here is my proxyfile.pac:
function FindProxyForURL(url, host)
{
//localhost projects
if (dnsDomainIs(host, "projecta.dev")) return "PROXY 192.168.1.87:81";
if (dnsDomainIs(host, "projectb.dev")) return "PROXY 192.168.1.87:82";
//... etc
//everything else
return "DIRECT";
}
As you can see, I am now telling my iphone to use my computer to proxy specific urls to different ports on the same ip. If I set it to port 80, then they would all access my default localhost instead of the website they are supposed to load. This meant I had update my vhosts file as well:
<VirtualHost *:80>
DocumentRoot "C:\xampp\htdocs-projecta\public_html"
ServerName projecta.dev
<Directory C:\xampp\htdocs-projecta>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Listen 81
<VirtualHost *:81>
DocumentRoot "C:\xampp\htdocs-projecta\public_html"
ServerName projecta.dev
<Directory C:\xampp\htdocs-projecta>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
For each project, I copy/paste the VirtualHost block, change the port and add a Listen command.
With this set up I am now able to access, on my pc and iphone http://projecta.dev, as well as the internet in general (e.g. http://google.com) so that I can download external resources as needed (such as jQuery, google fonts and so on).
I have setup MAMP as a web testing environment on my MacBook Air on my network (its local ip address is 10.0.0.10). It operates fine on that on the MacBook Air, i.e. localhost:8888 takes me to the Apache root directory.
Now I want to do some testing from a Windows machine I have on the same network. From the windows machine I typed in the following 10.0.0.10:8888 into Firefox. It says it is connecting for ages, then sometimes after a while some content shows, but it still says it is loading.
I can't work out what is going on. I have no firewall on the MacBook Air. The https.conf file is set to listen to port 8888.
Is there anything special that I need to do with a MAMP server to be able to access it on other machines?
Worked it out. While the machine serving MAMP didn't have a firewall, the Windows machine did and obviously the port 8888 was not getting through :P.
On a side note I am working with Wordpress and needed to update the wp-config.php file and the database. localhost needed to be updated to reflect my IP address.
In order to access the MAMP on a network, you suppose to Allow the port in Windows Firewall to allow all connections. On a windows server instance
Adding to your point...
Setting MAMP to use ports 80 for apache and 3306 for mySQL
I had the same issue on my machine and found this post doing a search but it didn't include how to fix it.
thanks!
For those who will land on this page in future and want to access their MAMP server by IP, add this as the very first <VirtualHost *:80> either with the default MacOS Apache server or with MAMP (for MAMP, put it after NameVirtualHost *:80):
<VirtualHost *:80>
DocumentRoot /path/to/web/root
</VirtualHost>
(where /path/to/web/root = /Applications/MAMP/htdocs for MAMP, & = /Library/WebServer/Documents for the default MacOS Apache server)
EDITED question
It last 2 weeks search.cpan.org was down many times. Yes i know here is a metacpan, but zilion of links from the net points to search.cpan.org so the metacpan isn't the "only" solution.
Want make a local redirector, by entering to my /etc/hosts something like:
search.cpan.org 127.0.0.1
and run an simple PSGI (or Apache) server on localhost:80 what should done the redirects. So the requests for "search.cpan.org" would be processed at "localhost" with the script and it should return valid 302 responses and redirect to metacpan.org.
#Mpapec pointed to mcpan.org - what doing exactly for what i looking, so now enoudh redirect every request to "mcpan.org".
After edited my /etc/hosts as above, tried the next apache config:
<VirtualHost *:80>
ServerName search.cpan.org
RedirectPermanent / http://search.mcpan.org/
</VirtualHost>
but doesn't work. Would be nice to get some help. Or an alternative, a simple app.psgi script would be nice too.
So, the questions are:
how to configure local apache for redirects search.cpan.org -> search.mcpan.org
or how to write a simple app.psgi for running it with plackup -p 80 for the same function
and one offtopic question:
know anyone something about the status and a future of search.cpan.org?
search.cpan.org is run by Graham Barr. For questions about websites that he runs, you'll have to contact him.
The source code is not available. That's why MetaCPAN sprang up.
I wouldn't bother with a redirector. Maybe a Greasemonkey script, though :)
I was an configuration error in my apache. The next works.
1.) edit /etc/hosts and add a line IP.OF.YOUR.LOCAL.WEBSERVER search.cpan.org, e.g.:
127.0.0.1 search.cpan.org
2.) for apache (i have 2.4) into httpd.conf enter
<VirtualHost *:80>
ServerName search.cpan.org
Redirect / http://search.mcpan.org/
</VirtualHost>
3.) Be sure than your apache listening on port 80 e.g. have a directive
Listen 80
With the above, every request to "search.cpan.org" get redirected to "search.mcpan.org" and the "mcpan" redirects it to "metacpan". It is suboptimal, would be nicer to have a set of rewrite rules what redirects directly into "metacpan", but works.
I have a website I am building on localhost:
http://localhost/my-website
I need to test it on my iPhone, but I'm not sure how to go about it. Do I just change my httpd-vhosts.conf file, and, if so, what are the settings?
Assuming that your development machine is called my-macbook-pro, you should just be able to navigate to http://my-macbook-pro.local/mywebsite on your iPhone.
To expand slightly on Richard J. Ross III's answer, "localhost" is a name used to refer only to the local computer. In order for your iPhone to be able to access content on that machine it must:
Have an IP address on the same network as the server machine.
This can be achieved by connecting the iPhone to a wireless access point that is on the same network as the PC, or by creating an ad-hoc wireless network between the two devices.
Respond to HTTP requests from network clients.
Assuming the server and the iPhone are on the same network, it should be possible for traffic to flow between them. However in order for your web content to be visible to the iPhone, the web server must also be configured to respond to requests made to the server machine's IP address.
This is not normally a problem as web servers are commonly configured to respond to HTTP requests sent to any of the machines IP addresses. It is possible that a server could be configured to only respond to local requests, however this is not a typical default setting
How you check or modify this setting is dependent upon the HTTP server software you are using. As this information is not specified I will include instructions for Apache2 as this is a very common choice of HTTP server.
Apache's Listen Directive
Apache's main configuration file is httpd.conf and it is located in the conf subdirectory of your Apache directory. The location of your Apache root directory will vary depending upon what operating system you are using and whether or not a custom location was chosen at installation.
The httpd.conf file contains a directive named Listen which controls the interface (IP address and port) on which Apache listens for incomming HTTP requests.
The default form of this directive is commonly
Listen 80
This specifies that the machine will respond on any of it's IP addresses to requests made on port 80, which is the default port for HTTP traffic.
You can modify the Listen directive to use any address associated with the machine including the loopback address (127.0.0.1) which the name localhost resolves to.
If Apache is set up to only listen on the loopback address then your server machine will only respond to requests made on the local machine. In this configuration, your Listen directive will look something like:
Listen 127.0.0.1:80
If this is the case, you will need to change to either listening on all addresses, as in the example above, or listening only on the address used by the iPhone to communicate with the server machine.
100% working solutions
(for linux + apache + vhosts)
If you are using vhost (several sites on the same server apache) the next several tips can help you view your local websites on mobile:
1) VHOST edit -You should go to /etc/apache2/sites-available/ on your server. There can be several files .conf, each file contain a virtual host configuration for apache. Default file will look like 000-default.conf. Open it (or another one) with admin permissions sudo. In that file you should see something like this:
<VirtualHost *:80>
ServerName auction.dev
ServerAdmin test#test.com
DocumentRoot /var/www/public_html/html
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/access.log combined
</VirtualHost>
2) XIP.IO - this special service (its totally free) can help you. You should add to .conf file next line - ServerAlias auction.dev.*.xip.io, after this operation your file will look like this:
<VirtualHost *:80>
ServerName auction.dev
ServerAlias auction.dev.*.xip.io
ServerAdmin test#test.com
DocumentRoot /var/www/public_html/html
ErrorLog /var/www/logs/error.log
CustomLog /var/www/logs/access.log combined
</VirtualHost>
After editing you should save this file and restart apache with command sudo apachectl restart.
3) View from mobile - You need to know ip of your server, in my situation ip = 192.168.1.247. Now in your mobile browser just type auction.dev.192.168.1.247.xip.io and you should see your local website.
I'm working with xampp. localhost works on port 8080.
I just find my ip with ipconfig and surf to http://10.0.0.1:8080.
That easy!
If you just want a better feel of the native behavior instead of just browser dev tools you can use the iOS simulator and type localhost:xxxx in safari app.
For OSX, go to System Preferences / Sharing. There, you can find and change the name of your computer. In the same section, you also have to enable "Internet Sharing" service with "iPhone USB" port.
Then you can view your website at http://{ computer_name }.local/my-website.
When you connect your ipod with the cable to your macbook the device appears in safari on your mac in the menu under developers. When you click this option you can see exact the same as you can on your ipod.
Following these steps worked for me:
https://mtm.dev/iphone-localhost-mac
It is based on Internet Sharing via USB and setting & using the device_name which is then used as mentioned as <device_name>.local:<port>