动态获取htaccess中的域名



我在PHP中有一个自定义应用程序,我想从URL中删除.php伸展到DO,我从Google

中找到了Bellow代码
RewriteEngine On
DirectoryIndex index.php index.html
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+).php([#?][^ ]*)? HTTP/
RewriteRule ^(.+).php$ www.example.com/$1 [R=301,L]

问题是如何动态获取目录的域名并用服务器域替换example.com

使用%{http_host}变量.htaccess file

RewriteEngine On
DirectoryIndex index.php index.html
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+).php([#?][^ ]*)? HTTP/
RewriteRule ^(.+).php$ http://%{HTTP_HOST}/$1 [R=301,L]

实际上您根本不需要主机名...

RewriteEngine On
RewriteRule ^/?(.+).php$ /$1 [R=301]

,最好从302临时重定向开始,只将其更改为301个永久重定向,一旦您确定一切都正确设置了一切。这可以防止在尝试解决问题的同时缓存问题...

此规则同样可以在HTTP服务器主机配置或动态配置文件(" .htaccess"文件(中工作。显然,重写模块需要在HTTP服务器内加载并在HTTP主机中启用。如果您使用动态配置文件,则需要注意它的解释是在主机配置中完全启用的,并且它位于主机的DOCUMENT_ROOT文件夹中。

和一般说明:您应该始终更喜欢将此类规则放在HTTP服务器主机配置中,而不是使用动态配置文件(" .htaccess"(。这些动态配置文件增加了复杂性,通常是出乎意料的行为的原因,难以调试,并且确实会减慢HTTP服务器。它们仅作为您无法访问真正的HTTP服务器主机配置(读:真正便宜的服务提供商(或坚持编写自己的规则(这是一个显然的安全噩梦(的情况的情况(读:真正便宜的服务提供商(或应用程序。

最新更新