我看到4层主要的方法(你选择哪一个更适合你 - 这取决于你的网站的重写规则逻辑):
1.添加全球排除规则,以防止任何进一步重写对文件操作:
RewriteCond %{HTTP_HOST} ^website.com
RewriteRule (.*) http://www.website.com/$1 [R=301,L]
# do not do any rewriting to this file
RewriteRule somefile\.html$ - [L]
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L]
如果你愿意,你可以指定文件的完整路径是更具体的(有效排除仅1特定的文件,如果有超过1个文件,这样的名字,但在不同的文件夹 - 例如URL应该以无引导斜杠开始):
# do not do any rewriting to this file
RewriteRule ^full/path/to/somefile\.html$ - [L]
2.添加全局排除规则,以防止上任何现有的文件或文件夹任何进一步重写操作:
RewriteCond %{HTTP_HOST} ^website.com
RewriteRule (.*) http://www.website.com/$1 [R=301,L]
# do not do anything for already existing files
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .+ - [L]
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L]
3.添加排除条件,将拒绝重写这个特殊.html文件到.PHP:
RewriteCond %{REQUEST_URI} !somefile\.html$
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L]
如果你愿意,你可以指定文件的完整路径是更具体的(有效排除1只
,将只允许重写的.html到.PHP
RewriteCond %{REQUEST_URI} !^/full/url/path/to/somefile\.html$
4.添加排除条件:这样的网址应以斜线开始) - 如果有超过1个文件,这样的名称,但在不同的文件夹中特定文件如果这样的.html文件不存在:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)\.html$ http://www.website.com/$1.php [R=301,L]
高于 ALL规则用于放置在.htaccess在网站根目录。如果放置在其他地方可能需要一些小的调整。
感谢LDG做了这份工作!要清楚给任何其他人与这个问题,并不熟悉htaccess我不得不把这行在我的HTML/PHP重定向 –