例如:我创建了一个指向 PHP 脚本的链接文件到文件.php <?php echo 'exaple'; ?>
.当我打开文件网上我得到的PHP脚本没有例子如果我打开文件.php我明白了例子。
我已经尝试过.htaccess有效。我创建了 file.html <?php echo 'exaple'; ?>
。并且.htaccess:
<IfModule mod_rewrite.c>
AddType application/x-httpd-php .html
</IfModule>
当我打开文件.html我明白了例子。
我尝试过同样的方法来获得文件在职的:
AddType application/x-httpd-php
AddType application/x-httpd-php *
AddType application/x-httpd-php file
AddType application/x-httpd-php ^ (.*)$
AddType application/x-httpd-php ^ (.*)
AddType application/x-httpd-php ^ (.)
AddType application/x-httpd-php ^.
没有成功。我怎样才能让它运行?
答案1
你是找错了对象和AddType
。
听起来您正在尝试实现无扩展名的 URL。
只需启用 MultiViews 即可实现此目的。例如:
Options +MultiViews
现在,当你请求时,如果存在,/file
它将提供服务/file.php
(或)。就像“魔术”一样。/file.html
参考:https://httpd.apache.org/docs/2.4/content-negotiation.html
或者,使用 mod_rewrite 内部重写 URL。例如:
Options +FollowSymLinks -MultiViews
RewriteEngine On
# Internally rewrite "/file" to "/file.php"
RewriteRule ^file$ file.php [L]
上述代码只是将具体的请求 URL 重写/file
为/file.php
。它不会先检查是否/file.php
存在,因此在这方面它是无条件的。
但是,具体如何实现这一点将取决于您的文件结构以及可能存在的指令。更一般地,要使用 mod_rewrite 重写对无扩展名文件的任何请求,您可以将上述内容更改RewriteRule
为以下内容:
# Internally rewrite "/<something>" to "/<something>.php"
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.\w{2,4}$ %{REQUEST_URI}.php [L]
上述内容将重写任何没有文件扩展名且没有通过附加扩展名映射到物理目录的请求.php
。
参考:https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
但是,MultiViews 和 mod_rewrite 不一定能很好地协同工作,因此如果您使用 mod_rewrite,则应该禁用 MultiViews