删除文件扩展名并重定向到索引页面

时间:2018-10-23 18:35:16

标签: php html .htaccess

因此,我试图让我的网站删除所有文件扩展名,以代替https://multimap.xyz/error/id.php?= ...而是https://multimap.xyz/error/id?= ...。同样,我应该能够做https://multimap.xyz/mail/index.php,它将尾随的index.php删除,只得到https://multimap.xyz/mail/

我正在尝试使用.php和.html文件扩展名和索引以及使用.htaccess来实现这一点,到目前为止,这是我所要做的

php_flag display_errors off
ErrorDocument 404 https://multimap.xyz/error/id?=404
Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

这非常适合删除文件扩展名。所以... / error / id?= ...完美地工作。但是,当尝试访问https://multimap.xyz/mail/时,会显示一条错误页面,提示

  

在此服务器上找不到请求的URL /email/.php。

感谢任何帮助/建议。

谢谢:)

1 个答案:

答案 0 :(得分:0)

在重写之前,您应该检查.html.php文件的存在。

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index|(\S+?))\.(?:php|html)[/\s?] [NC]
RewriteRule ^ /%1%2 [R=301,L,NE]

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

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