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

时间:2016-01-11 03:02:08

标签: .htaccess url redirect expressionengine

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

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

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

示例:

这是正确的网址并显示索引内容:

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

这些是不正确的网址(仍然有效 - 一切正常),并显示索引内容:

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]

2 个答案:

答案 0 :(得分:1)

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

    private byte[] DoWhile(string filePath)
    {
        byte[] bytes = new byte[0];
        bool fail = true;

        while (fail)
        {
            try
            {

                    using (FileStream file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
                    {
                        bytes = new byte[file.Length];
                        file.Read(bytes, 0, (int)file.Length);
                    }

                    fail = false;


            }
            catch
            {
                Thread.Sleep(500);
            }
        }

        System.IO.File.Delete(filePath);
        return bytes;
    }

答案 1 :(得分:0)

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

RedirectMatch ^/contact/.+$ /contact

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

/contact/foo

/contact