我在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服务器主机配置(读:真正便宜的服务提供商(或坚持编写自己的规则(这是一个显然的安全噩梦(的情况的情况(读:真正便宜的服务提供商(或应用程序。