2016-04-20 69 views
0

在我的.htaccess文件中,我已经有一些重写条件和规则,并且它的工作正常。htaccess文件中的多个重写规则和条件

现在我需要将“http重定向到https”添加到我的htaccess文件中。

这里是我的老.htaccess文件:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L] 

RewriteRule ^([a-z0-9_-]+)$ pages/$1.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2/$3.php [L] 

我尝试添加以下代码文件,但它不正常工作。 例如,如果我将url直接写入浏览器的工作(仅限于www)。但如果点击我的任何反向链接或谷歌搜索结果链接,它不起作用。

RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] 

我在哪里错了?我应该把代码放在哪里?任何帮助都会很棒。谢谢。

+0

请定义**它无法正常工作** – starkeen

+0

我编辑了我的问题Stion的。 – feyyaz

+0

你有404或ssl错误吗? – starkeen

回答

0

您的htaccess看起来是这样的:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^www\.yoursite\.com [NC] 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L] 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php [L] 

RewriteRule ^([a-z0-9_-]+)$ pages/$1.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2.php [L] 
RewriteRule ^([a-z0-9_-]+)/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+)$ pages/$1/$2/$3.php [L] 

至少,它为我工作,在我自己的实现

+0

我从chrome得到“ERR_TOO_MANY_REDIRECTS”错误。它不起作用。 – feyyaz

+0

也许这会帮助你:http://htaccess.mwl.be/ –

+0

谢谢你,我已经在使用这个工具。它给了我没有错误,但它不适用于服务器。 – feyyaz

0

您可以使用下面的htaccess:

RewriteEngine on 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}/$1 [NC,R=301,L] 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.+)/?$ $1.php [L] 

清除您的浏览器的缓存在测试之前

+0

Url更改为https,但在chrome中抛出“ERR_TOO_MANY_REDIRECTS”错误。页面没有打开。 – feyyaz

+0

当我看着开发人员工具网络部分,我看到21 301重定向到相同的网址。这就是为什么我有太多的重定向错误。 – feyyaz

+0

你有其他规则吗? – starkeen