當訪問URL www.domain.com/test.php,既$_SERVER['SERVER_NAME']
和$_SERVER['HTTP_HOST']
輸出域名而不萬維網。前綴:domain.com
爲什麼會這樣?
編輯:如上所述here,$_SERVER['SERVER_NAME']
可能與實際請求的URL不同,但$_SERVER['HTTP_HOST']
應返回域。
PHP版本:7.1 Apache的版本:2.2
的.htaccess內容如下(最有趣的部分是頂部重寫塊)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
</IfModule>
# BEGIN Force SSL for SAKURA
# RewriteしてもHTTPS環境変數を有効にする
SetEnvIf REDIRECT_HTTPS (.*) HTTPS=$1
# 常時HTTPS化(HTTPSが無効な場合リダイレクト)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{ENV:HTTPS} !on
RewriteCond %{REQUEST_URI} !/wp-cron\.php$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END Force SSL for SAKURA
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
這裏是test.php的內容:
<?php
echo $_SERVER['SERVER_NAME'];
echo $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
輸出是「domain.com」和「domain.com/test」。
可能重複[PHP:$ \ _ SERVER變量:$ \ _ SERVER \ ['HTTP \ _HOST'\] vs $ \ _ SERVER \ ['SERVER \ _NAME'\]](https://stackoverflow.com/questions/13772934/php-server-variables-serverhttp-host-vs-serverserver-name) –
@Obsidian Age這個線程在上面的問題中可能是「可能重複的」? – voodoo417
@Obsidian感謝您的建議,但這個問題涉及到爲什麼這兩個變量不同,我的問題是爲什麼我的URL不同於這些變量(至少HTTP_HOST應該是我所知道的相同) – TheTrueTDF