Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 将所有htm文件扩展名转发到特定文件_Apache_.htaccess - Fatal编程技术网

Apache 将所有htm文件扩展名转发到特定文件

Apache 将所有htm文件扩展名转发到特定文件,apache,.htaccess,Apache,.htaccess,我的任务是更改网站上100个.htm文件,只显示联系人页面。至于更改文件,我想只使用一个.htaccess文件,将所有包含“.htm”或“.html”的请求强制添加到contact.htm页面 我对.ht_access文件的了解非常有限,而我拥有的强制所有请求通过index.php的文件不起作用,因为重写条件之一是检查文件是否真实 如有任何建议或提示,将不胜感激: // My .htaccess rules at the moment: RewriteCond %{REQUEST_FILEN

我的任务是更改网站上100个.htm文件,只显示联系人页面。至于更改文件,我想只使用一个.htaccess文件,将所有包含“.htm”或“.html”的请求强制添加到contact.htm页面

我对.ht_access文件的了解非常有限,而我拥有的强制所有请求通过index.php的文件不起作用,因为重写条件之一是检查文件是否真实

如有任何建议或提示,将不胜感激:

 // My .htaccess rules at the moment:
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ contact.htm [NC,L]

您可以尝试以下方法:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^[^\.]*\.htm$ contact.htm [NC,L]
这将替换以
.htm
结尾的所有内容,以contact.htm结尾


编辑:犯了一个错误,检查并修复了它

如果你想保持你的搜索引擎优化并防止链接腐烂(也就是说),你需要让客户端知道旧的HTML文件不再有效:

RedirectMatch 301 ^.*html?$ http://example.com/contact.html

编辑:作为一个有趣的旁注,返回一个410。

嗨,Puckipedia,谢谢你的回答,但它似乎没有任何作用?我也关闭了条件,但规则似乎没有任何作用。您是否启用了mod_rewrite?在顶部添加这一行:
RewriteEngine On
现在修复了它,在我的笔记本上的Apache2上检查了它。具有讽刺意味的是,这似乎只适用于其他两个页面,我检查了,url确实正确(加载.htm文件)嘿@BryanH,谢谢你的建议。我遇到了一个永久性的重定向问题,我想当它转发到那个url时,它试图再次转发,导致了一个无限循环,我如何排除contact.htm?对,你是-我没有注意!联系人页面的地址是什么?您好@BryanH,该网站目前还没有上线,但文件将是contact.htm,它也会重定向该文件