Apache htaccess rewrite.html不是必需的/是可选的
我有一个工作网站,在谷歌排名中至少有500页。 所有页面的末尾都有.html。 现在我想删除所有页面的.html,但让Google中的页面(带有Apache htaccess rewrite.html不是必需的/是可选的,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个工作网站,在谷歌排名中至少有500页。 所有页面的末尾都有.html。 现在我想删除所有页面的.html,但让Google中的页面(带有.html)保留索引 经过搜索,我找不到正确的答案。 我知道那是什么?是可选的。我试过两条规则,但都不管用 以下是我现在的htaccess: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*
.html
)保留索引
经过搜索,我找不到正确的答案。
我知道那是什么?是可选的。我试过两条规则,但都不管用
以下是我现在的htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).html$ find_page.php?redirect=$1&%{QUERY_STRING} [L,QSA]
我尝试添加:
RewriteRule ^(.*)$ find_page.php?redirect=$1&%{QUERY_STRING}
因此,如果URL不包含扩展名,请使用此规则,否则请使用普通规则(使用htaccess
)
我希望我的规则应该是这样的:^(.*)(?\.html)$
所以我的目标是:不管有没有html都应该有效,但是.php
不应该有效:-)试试看
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.html
重定向不需要find_page.php
。正如其他答案http://server/folder/file
和http://server/folder/file.html
对于用户来说是一样的,但是对于谷歌来说是不同的
这不会影响对PHP、文件夹和其他内容的访问。如果它不指向文件或文件夹,它只会尝试将«.html»添加到请求的URL
我已经检查过了,它工作得很好,甚至用户使用锚查询uri,比如1.html#bookmark1
Ok解决了我的问题
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.html([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.html find_page.php?redirect=$1&%{QUERY_STRING} [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ find_page.php?redirect=$1&%{QUERY_STRING} [L,QSA]
使用此选项,将检查页面末尾是否有.html可选项。如果有,第一条规则是否匹配,否则将进一步使用第二条最后没有html的规则为什么要寻找复杂的解决方案
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.html$ find_page.php?redirect=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)?$ find_page.php?redirect=$1 [L,QSA]
这将重写对该php脚本的所有请求,添加原始“文件名”作为参数“重定向”,并保留所有查询参数。这就是你在问题中提出的要求
但是警告:您可以这样做,它将允许将请求重写到例如页面“重定向”为../redirection?somearg
或../redirection.html?somearg
。但对于谷歌来说,这两个请求是完全不同的页面。这不会帮助您在切换到新的请求方案时保留任何评级
还有一个一般性的附带说明:如果您可以控制http服务器配置,那么您应该始终希望将这些规则放置在主机配置中,而不是使用
.htaccess
样式的文件。这样的文件非常容易出错,使事情变得复杂,难以调试,并且会使服务器速度减慢。它们只应在两种情况下使用:如果您无法控制http服务器配置,或者如果您需要脚本对规则集进行动态更改(这通常是非常不安全的事情) 如果你想使用“正则表达式”,读一篇关于“正则表达式”的小介绍有什么不好?这些都有详细的解释。你只要看看就行了。为什么在这里问呢?我是说还记得上学的日子吗?当你因为读到一些东西而学到了一些东西时?这确实奏效了!太好了,不是吗?@arkascha这是什么评论?当然我读正则表达式。我知道一些关于它的事情,但这并不能使我成为大师。你为什么要上学?因为老师会给你展示一些东西,给你一些建议,这就是我所做的!我试过了,我失败了,我请求帮助。对不起,你抱怨我的评论太苛刻是对的。这不是一个建设性的评论。很抱歉,这样的东西不属于这里。但也请理解看到所有这些问题是多么令人沮丧,人们显然读了5行关于某件事的内容,决定“嗯,不知道”,然后把他们的问题扔在这里。相反,这个地方应该是真正的问题,人们需要帮助。你的问题在谷歌上的500万个例子中得到了回答。例如,它们都显示了?
的归属。@arkascha道歉批准:-)我知道,很多人都喜欢你解释。我回答这些问题的方式就是在谷歌上搜索,添加链接,让这些人阅读。提醒他们是否尝试谷歌是我认为最好的方式。不管怎样,谢谢你的回答,如果你知道如何解决问题,你应该做出一个好的贡献:-)我认为你没有正确地阅读我的问题。我已经重写过了,想从文件名中删除.html,但在添加.html时可以访问正确的文件(因为谷歌的缓存)@eL Prova我不知道文件夹中实际存在哪些文件?如果.html文件仍然存在,而您只想使用扩展名和不使用扩展名访问它们,这是正确的吗?好的。对不起,我更改了答案。我想我们沟通有误…html文件只是一个名称。页面存储在数据库中。首先,为了表现得像真实页面一样,我创建了/.html。现在我想有/只有,但当有人访问旧样式时,它应该显示相同的页面,这是一个非常有建设性的答案!你说得不错!谢谢你!我试过了,似乎工作没有任何问题。我知道这些论点,但只使用一种风格。我想谷歌缓存链接,但如果有人有一个扩展链接,它应该得到相同的页面,而不是404或什么。一般的注意事项是值得注意的。我知道,但我想很多人都不知道。无论如何,谢谢你的回答。学到了新东西;-)在规则中.html被赋予重定向不应该发生的事情…我尝试修复它,如果你有解决方案,请告诉我!我确实明白你的意思。可能有一个更简洁的解决方案,但目前最直接的是我在上面更新的答案中发布的内容。这是两条规则否,首先是与training.html
匹配的规则,然后是更一般的规则。因为规则是按顺序处理的,所以应该可以解决这个问题。