我正在尝试将我网站上的一个目录重定向到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”错误,这是推荐的修复。
有什么想法吗?
答案 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>