2016-01-11 73 views
3

我们正在使用名为ExpressionEngine的CMS。索引页显示在目录中的所有页面上

我们有名为联系人的模板/文件夹 - 具有和索引文件。我们只有联系人的索引页面,因为我们没有联系人所需的更深的网址。

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

例子:

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

http://www.example.com/contact/

这些都是不正确的URL(即仍然工作 - 一切正常),并显示索引的内容:

http://www.example.com/contact/kjhfd/
http://www.example.com/contact/kjhfd/kljhdf/
http://www.example.com/contact/f/

我们希望停止和301重定向到http://www.example.com/contact/

我曾尝试RedirectMatch与htaccess的 - 我试过301重定向htaccess的,我已经尝试了时髦的PHP如果重定向 - 没有一个是有工作至今

我们没有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] 
+0

我曾尝试RedirectMatch与htaccess的 - 我试过301重定向htaccess的,我已经尝试了时髦的PHP如果重定向 - 没有一个迄今 – Trent

+0

很好的了解工作。您应该更新问题,解释您尝试过的方式以及失败的方式,以便我们帮助您解决问题,而不仅仅是为您的问题编写可行的解决方案。 – Guildencrantz

回答

0

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

RedirectMatch ^/contact/.+$ /contact 

这将网址重定向尾随到正确的位置路径(S)

/contact/foo 

/contact 
+0

感谢您的建议,但它重定向到/ contact /?/ contact/foo/ – Trent

+0

@trent你有任何其他的PHP或htaccess重定向? – starkeen

+0

我已经添加了上面大部分的htaccess文件,但是我遗漏了一些不相关的301重定向,因为他们确定了业务 – Trent

1

快速而简单的解决方法是检查URL中的segment_3,如果存在,则重定向到联系人索引页面。您可以使用{redirect}标签。

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

有效的响应,如果我们没有第三段网址但我们这样做。这也只能解决/ contact segment_2后面的URL - 但是它几乎发生在我们所有的模板中,so/product/location /也会有相同的问题,这个(/ product/location/foo)会被认为是一个真正的URL尽管不是 – Trent

相关问题