.htaccess重定向 - 没有[R]标志的无限循环

时间:2017-06-19 14:21:33

标签: apache .htaccess redirect

我正在尝试在我的网站上使用漂亮的网址。我想重定向

example.com/page-title/ to example.com/?q=page-title

以下.htaccess代码工作正常,但由于[R]标志,它执行HTTP重定向:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(.+)/*$ https://www.example.com/?q=$1 [L,R]

显然我想进行内部重定向,但当我删除[R]标志时,它会进入重定向循环。

  1. 为什么[R]标志不循环,没有它呢?
  2. 如何在没有[R]标志的情况下避免循环?

1 个答案:

答案 0 :(得分:1)

问题似乎是你的目标中有http://。即使没有R标记,如果Apache看到目标中包含http://https://的完整网址,那么它会使用R=302执行完全重定向。

您可以使用规则:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)$ /?q=$1 [L,QSA]