2017-06-19 20 views
1

我想在我的网站上使用漂亮的网址。我想重定向.htaccess重定向 - 没有[R]标志的死循环

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

下面的.htaccess代码工作正常,但它的HTTP,因为[R重定向]标志:

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

更改您的规则是:'重写规则^(+)$/Q = $ 1 [L,QSA]',彻底清除缓存? – anubhava

+1

是的,我认为问题是包括整个URL。没有它,Apache无法检测和禁用循环。随意发布答案,如果你和我选择它作为正确的。 –

回答

1

问题似乎是你在你的目标中有http://。即使没有R标志,如果Apache看到一个完整的URL,其目标为http://https://,那么它会执行完全重定向R=302

你可以使用规则:

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