htaccess文件中的多个重写规则和条件

时间:2016-04-20 12:59:36

标签: .htaccess http mod-rewrite https

在我的.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]

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

2 个答案:

答案 0 :(得分: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]

至少,它在我自己的实现中对我有用

答案 1 :(得分: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]

在测试此

之前清除浏览器的缓存