尝试将目录重定向到https,但在返回时获取双重URL段

时间:2012-11-30 05:48:07

标签: .htaccess ssl https expressionengine

我正在尝试将我网站上的一个目录重定向到https。该目录根本不是一个目录,因为该网站是动态的。我正在使用ExpressionEngine作为CMS。

我的.htaccess文件中已经有几行删除index.php ExpressionEngine会添加到所有网址。

这就是我所拥有的:

<IfModule mod_rewrite.c>
        RewriteEngine On

RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} store 
RewriteRule ^(.*)$ https://mysite.com/store/$1 [R,L]

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

</IfModule>

当我访问http://mysite.com/store/时,它会返回https://mysite.com/store/store/

我认为这可能与以下内容有关:

    RewriteRule ^(.*)$ /index.php?/$1 [L]

上面的行在index.php之后有一个问号,因为我收到了“No input file”错误,这是推荐的修复。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这一行:

RewriteCond %{REQUEST_URI} store 

在“商店”前面应该有!

RewriteCond %{REQUEST_URI} !store 

因为如果URI已经/store希望它重定向。

答案 1 :(得分:0)

编辑了这一行:

RewriteRule ^(.*)$ https://mysite.com/store/$1 [R,L]

阅读:

RewriteRule ^(.*)$ https://mysite.com/$1 [R,L]

现在它有效。这是完整的代码:

<IfModule mod_rewrite.c>
        RewriteEngine On

        RewriteCond %{SERVER_PORT} 80
        RewriteCond %{REQUEST_URI} store 
        RewriteRule ^(.*)$ https://mysite.com/$1 [R,L]

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

</IfModule>