将Apache的.htaccess用于隐藏.php和.html扩展名

4
我应该添加哪些行来从我的网站中删除 .html.php 扩展名? 我只用下面这个代码来移除 .html 部分:
RewriteEngine on

RewriteBase /
RewriteCond %{http://jobler.ro/} !(\.[^./]+)$
RewriteCond %{REQUEST_fileNAME} !-d
RewriteCond %{REQUEST_fileNAME} !-f
RewriteRule (.*) /$1.html [L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ http://jobler.ro/$1 [R=301,L]

但我需要同一域名下同时隐藏这两种文件类型扩展名。
2个回答

6

我知道回答晚了,但我还是会回答,因为这可能对某些人有用 :)

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

#Remove html extension
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.html -f 
    RewriteRule ^(.*)$ $1.html

这将从您的文件中同时删除php和html扩展名,完美运作。

4

如果存在扩展名为.html.php的文件,您会希望测试其是否存在,并在存在时重定向到该文件。

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*)$  $1.html [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$  $1.php [L]

RewriteCond %{REQUEST_URI} \.((html)|(php))$
RewriteRule ^(.*)\.([^.]+)$  $1 [R,L]

@Blazer,嘿,既然一切都正常工作了,你有没有可能点击接受答案呢? :-) - cnst
@Blazer,既然这个功能完美运行,你能否点击接受按钮,这样我们两个都可以得到辛苦工作的积分吗?谢谢! - cnst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接