【问题标题】:Multiple rewrite rules and conditions in htaccess filehtaccess 文件中的多个重写规则和条件
【发布时间】:2016-08-13 04:18:03
【问题描述】:

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

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

【问题讨论】:

  • 请定义它不能正常工作
  • 我编辑了我的问题。
  • 您是否收到 404 或 ssl 错误?
  • 我收到太多重定向错误。

标签: .htaccess http mod-rewrite https


【解决方案1】:

您的 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]

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

【讨论】:

  • 我从 chrome 收到“ERR_TOO_MANY_REDIRECTS”错误。它不起作用。
  • 谢谢你我已经在使用这个工具了。它没有给我任何错误,但它在服务器上不起作用。
  • @feyyaz 你解决过这个问题吗? (我知道它是不久前记录的,但我现在得到了这个!)
  • 当您的网站没有 www 前缀时,可能会出现重定向错误。然后你应该从 HTTP_POST 中删除它
【解决方案2】:

您可以使用以下 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]

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

【讨论】:

  • Url 更改为 https,但它在 chrome 中引发“ERR_TOO_MANY_REDIRECTS”错误。页面打不开。
  • 当我查看开发者工具网络部分时,我看到 21 301 重定向到相同的 url。这就是为什么我收到太多重定向错误。
  • 你还有什么规定吗?
  • 其实我有,但我把它们转到评论行。现在我只是使用你上面的代码。我只是想打开我的主页网址它不起作用。
  • 此代码适用于我的服务器。我想看你完整的htaccess,请发帖
猜你喜欢
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 1970-01-01
相关资源
最近更新 更多