使用 .htaccess,我想将不存在的文件重定向到控制器页面,并将存在的 .php 文件的扩展名重写为 .html 扩展名。如果文件存在并且是 .html 页面,我希望它保持不变。每次我尝试将重写规则从 .php 注入到 .html 时,我似乎都会弄乱到控制器页面的重定向。所以我不确定从这里去哪里:
Options -Indexes
Options +FollowSymLinks
DirectoryIndex index.php
ErrorDocument 404 /404.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ mycontroller.php [L,QSA]
</IfModule>
任何帮助我将不胜感激。
编辑
我似乎在这里找到了大部分答案(但我必须省略 ReweriteBse 否则它不起作用)。最大的问题是,现在,我现有的 .html 文件不起作用,它只为我的带有 .html 扩展名的 .php 文件提供服务,并将所有其他文件定向到控制器。现有的 .html 文件转到我的 404 页面。我想知道如何保持现有的 .html 文件完好无损。我的新代码如下:
RewriteEngine on
RewriteCond %{THE_REQUEST} (.*)\.php
RewriteRule ^(.*)\.php $1.html [R=301,L]
RewriteCond %{THE_REQUEST} (.*)\.html
RewriteRule ^(.*)\.html $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ mycontroller.php [L,QSA]