【问题标题】:Index Page Showed on All Pages In Directory目录中所有页面上显示的索引页面
【发布时间】:2016-04-15 06:59:24
【问题描述】:

我们正在使用一个名为 ExpressionEngine 的 CMS。

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

但是,如果您在正常联系页面 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/。

我已经尝试使用 htaccess 进行 RedirectMatch - 我已经尝试在 htaccess 中进行 301 重定向,并且我已经尝试了一个时髦的 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]

【问题讨论】:

  • 我已经尝试使用 htaccess 进行 RedirectMatch - 我已经在 htaccess 中尝试了 301 重定向,并且我已经尝试了一个时髦的 php if 重定向 - 到目前为止,这些都没有奏效
  • 很高兴知道。您应该更新问题,说明您尝试过的方法以及失败的原因,以便我们帮助您解决问题,而不是简单地为您的问题编写可能的解决方案。

标签: .htaccess url redirect expressionengine


【解决方案1】:

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

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

【讨论】:

  • 如果我们没有带有第 3 段的 URL 但我们有,则有效响应。这也只会解决 /contact segment_2 之后的 URL - 但它几乎发生在我们所有的模板中,所以 /product/location/ 也会有同样的问题,即使这个 (/product/location/foo) 会被认为是一个真实的 URL虽然不是
【解决方案2】:

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

RedirectMatch ^/contact/.+$ /contact

这会将带有尾随路径的网址重定向到正确的位置

/contact/foo

到

/contact

【讨论】:

  • 感谢您的建议,但它会重定向到 /contact/?/contact/foo/
  • @trent 你还有其他 php 或 htaccess 重定向吗?
  • 我已经在上面添加了大部分 htaccess 文件,但是我遗漏了一些不相关的 301 重定向,因为它们标识了业务
猜你喜欢
  • 2015-04-09
  • 2016-08-04
  • 2012-02-21
  • 1970-01-01
  • 2020-05-16
  • 2012-05-28
  • 2017-02-23
  • 2014-09-29
相关资源
最近更新 更多