.htaccess 目录中所有页面上显示的索引页面

.htaccess 目录中所有页面上显示的索引页面,.htaccess,url,redirect,expressionengine,.htaccess,Url,Redirect,Expressionengine,我们正在使用一种叫做ExpressionEngine的CMS 我们有一个名为Contact的模板/文件夹,其中包含和索引文件。我们只有联系人的索引页,因为我们没有联系人所需的更深层次的URL 但是,如果在普通联系人页面URL的末尾添加任何内容,它将在联系人页面加载相同的内容,但不会重定向并保留随机URL 例如: 这是正确的URL,并显示索引内容: 这些URL不正确(仍然有效-所有内容都有效),并显示索引内容: 我们希望它停止并重定向到301 我试过使用htaccess重定向匹配-我试过在

我们正在使用一种叫做ExpressionEngine的CMS

我们有一个名为Contact的模板/文件夹,其中包含和索引文件。我们只有联系人的索引页,因为我们没有联系人所需的更深层次的URL

但是,如果在普通联系人页面URL的末尾添加任何内容,它将在联系人页面加载相同的内容,但不会重定向并保留随机URL

例如:

这是正确的URL,并显示索引内容:

这些URL不正确(仍然有效-所有内容都有效),并显示索引内容:



我们希望它停止并重定向到301


我试过使用htaccess重定向匹配-我试过在htaccess中使用301重定向,我试过一个时髦的PHP if Redirect-到目前为止都没有成功

我们没有PHP重定向。我们有许多htaccess重定向,请参见以下内容:

RewriteEngine On

#Trailing backslash
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* [QSA,L]

您可以在htaccess中使用以下处理程序:

RedirectMatch ^/contact/.+$ /contact
这将带尾随路径的url重定向到正确位置

/contact/foo


一个简单快捷的修复方法是检查URL中的段_3,如果它存在,则重定向到联系人索引页。您可以使用{redirect}标记

{if segment_3}
 {redirect ="/contact"}
{/if}

谢谢您的建议,但它会重定向到/contact/?/contact/foo/@trent您还有其他php或htaccess重定向吗?我已经在上面添加了我们的大部分htaccess文件,但是我遗漏了一些不相关的301重定向,因为它们标识了业务。我尝试了与htaccess匹配的重定向-我在htaccess中尝试了301重定向,我尝试了时髦的php如果重定向-没有一个工作得这么好知道。您应该更新问题,解释您尝试过的内容以及失败的原因,这样我们可以帮助您解决问题,而不是简单地为您的问题编写可能的解决方案。如果我们没有包含第三段的URL,则响应有效,但我们有。这也将只处理跟随/联系SeGeTys2的URL——但是它几乎发生在我们所有的模板中,所以/产品/位置/也将有相同的问题,在这个(/产品/位置/ FoO)将被认为是一个真实的URL,尽管它不是。
{if segment_3}
 {redirect ="/contact"}
{/if}