从 URL 中删除“.php”-没有任何效果

从 URL 中删除“.php”-没有任何效果

Ubuntu 14.04LTS 32位

我知道这是一个老问题但是......

我需要它从可见 URL 中删除找到的 .php。它需要与 /showthread.php?id=XX ---> /showthread?id=XX 配合使用

我甚至无法让它与/page.php-->一起工作/page。我尝试过这些:

https://stackoverflow.com/questions/4026021/remove-php-extension-with-htaccess

https://stackoverflow.com/questions/1992183/how-to-hide-the-html-extension-with-apache-mod-rewrite

https://stackoverflow.com/questions/15917258/remove-php-from-urls-with-htaccess

https://stackoverflow.com/questions/13832468/how-to-stop-htaccess-loop/13832827#13832827

它什么都不做。而其他.htaccess代码运行正常。

尽管

<?php 
phpinfo();

在已加载模块中列出 mod_rewrite

<?php
 if(!function_exists('apache_get_modules') ){ phpinfo(); exit; }
 $res = 'Module Unavailable';
 if(in_array('mod_rewrite',apache_get_modules())) 
 $res = 'Module Available';
?>
<html>
<head>
<body>
<p><?php echo apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>

返回Module Available

尝试了更多东西

# Apache Rewrite Rules
 <IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On
  RewriteBase /

# Add trailing slash to url
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
  RewriteRule ^(.*)$ $1/ [R=301,L]

# Remove .php-extension from url
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME}\.php -f
  RewriteRule ^([^\.]+)/$ $1.php 

# End of Apache Rewrite Rules
 </IfModule>

#

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

#

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php

甚至这都没有任何效果:

RewriteRule ^page$ page.php [L]

sudo service apache2 restart不会改变任何事情。

服务器重启不会改变任何事情。

我尝试清除里面的其他代码,但没有发生任何改变。

我清除了浏览器缓存 100 次

我开始觉得它只是讨厌我。这到底是什么原因造成的?

答案1

确保您的特定站点已启用以下功能:

$sudo vi /etc/apache2/sites-available/000-default.conf

<Directory "/var/www/html">
     AllowOverride All 
</Directory>

$sudo service apache2 restart

答案2

请将其用作您的.htaccess 文件:

<IfModule mod_rewrite.c>   
Options +FollowSymLinks -MultiViews    
# Turn mod_rewrite on    
RewriteEngine On    
RewriteBase /    
RewriteCond %{REQUEST_FILENAME} !-f    
RewriteCond %{REQUEST_FILENAME} !-d    
RewriteRule ^(.*)$ index.php?$1 [L,QSA]    
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]    
RewriteRule ^ %1 [R=301,L]    
</IfModule>

如果您想要其他文件名,您可以将 index.php 替换为您的文件名和扩展名。

如果您的目录仍然显示 index.php 文件,请在您的主机中启用模块重写。

答案3

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

看看这个如何使用 htaccess 从 URL 中删除 php、html 扩展名

相关内容