Home > Article > Backend Development > Why Isn\'t $_SERVER[\"REQUEST_URI\"] Providing the Full URL on Windows/IIS Servers?
Getting the Current Page's Full URL on Windows/IIS Servers
You've encountered an issue while setting up 301 redirects in PHP on a Windows/IIS server. Despite using $_SERVER["REQUEST_URI"], the expected results are not being obtained. This article aims to clarify the issue and provide a solution.
Understanding the Problem
On Apache servers, $_SERVER["REQUEST_URI"] typically holds the entire URL. However, on Windows/IIS servers, this variable may not provide the desired result. This is because IIS utilizes a different request handling mechanism compared to Apache.
The Solution: Using $_SERVER['PATH_INFO']
For Windows/IIS servers, the correct variable to use is $_SERVER['PATH_INFO']. This variable contains the portion of the URL after the script's base path. In your case, it would be "/post-title/".
Example Usage
Here's an example of how you can use $_SERVER['PATH_INFO'] in your PHP code:
<code class="php">$currentURL = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PATH_INFO'];</code>
This code will assign the full URL, including the "/post-title/" segment, to the $currentURL variable.
Conclusion
While $_SERVER["REQUEST_URI"] is commonly used for this purpose, it may not work as expected on Windows/IIS servers. By using $_SERVER['PATH_INFO'] instead, you can accurately retrieve the current page's full URL on a Windows/IIS server.
The above is the detailed content of Why Isn\'t $_SERVER[\"REQUEST_URI\"] Providing the Full URL on Windows/IIS Servers?. For more information, please follow other related articles on the PHP Chinese website!