Apache .htaccess重定向-无[R]标志的无限循环
我试图在我的网站上使用漂亮的URL。我想重定向 example.com/page-title/至example.com/?q=页面标题 以下.htaccess代码工作正常,但由于[R]标志,它执行HTTP重定向:Apache .htaccess重定向-无[R]标志的无限循环,apache,.htaccess,redirect,Apache,.htaccess,Redirect,我试图在我的网站上使用漂亮的URL。我想重定向 example.com/page-title/至example.com/?q=页面标题 以下.htaccess代码工作正常,但由于[R]标志,它执行HTTP重定向: RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.+)/*$ https://www.example.com/?q=$1 [L,
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)/*$ https://www.example.com/?q=$1 [L,R]
显然我想做一个内部重定向,但是当我删除[R]标志时,它会进入一个重定向循环
问题似乎是您的目标中有
http://
。即使没有R
标志,如果Apache看到目标中有http://
或https://
的完整URL,那么它将使用R=302
执行完全重定向
您可以使用以下规则:
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(.+)$ /?q=$1 [L,QSA]
将您的规则更改为:
RewriteRule^(+)$/?q=$1[L,QSA]
并完全清除缓存。是的,我认为问题在于包含了整个URL。没有它,Apache无法检测和禁用循环。如果您愿意,请随时发布答案,以便我选择正确的答案。