这是我的 wordpress 博客网站的 .htaccess,使用它将 www 重定向到非 www
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com%{REQUEST_URI} [R=301,L]
RewriteBase /blog/
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.(html|php)\ HTTP/
RewriteRule ^(([^/]+/)*)index\.(html|php)$ http://example.com/blog/$1 [R=301,L]
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
但是当我尝试打开 www.example.com/blog/ 时,出现 500 内部错误。
在日志中提到:由于可能的配置错误,请求超出了 10 次内部重定向的限制。如有必要,请使用“LimitInternalRecursion”增加限制。使用“LogLevel debug”获取回溯。
任何建议,我的 .htaccess 有什么问题
错误日志:
[Tue Sep 13 08:49:52 2016] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Tue Sep 13 08:49:52 2016] [debug] core.c(3072): [client 127.0.0.1] r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /blog
[Tue Sep 13 08:49:52 2016] [debug] net/instaweb/apache/mod_instaweb.cc(384): [client 127.0.0.1] ModPagespeed OutputFilter called for request /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:52 2016] [debug] net/instaweb/apache/mod_instaweb.cc(405): [client 127.0.0.1] Request not rewritten because: request->status != 200 (was 500)
[Tue Sep 13 08:49:52 2016] [debug] mod_deflate.c(687): [client 127.0.0.1] Zlib: Compressed 625 to 385 : URL /mnt/var/www/html/example/web/index.php
[Tue Sep 13 08:49:53 2016] [error] [client 127.0.0.1] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3072): [client 127.0.0.1] r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] core.c(3078): [client 127.0.0.1] redirected from r->uri = /favicon.ico, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] net/instaweb/apache/mod_instaweb.cc(384): [client 127.0.0.1] ModPagespeed OutputFilter called for request /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] net/instaweb/apache/mod_instaweb.cc(405): [client 127.0.0.1] Request not rewritten because: request->status != 200 (was 500), referer: http://www.example.com/blog
[Tue Sep 13 08:49:53 2016] [debug] mod_deflate.c(687): [client 127.0.0.1] Zlib: Compressed 625 to 385 : URL /mnt/var/www/html/example/web/index.php, referer: http://www.example.com/blog
答案1
通过虚拟主机配置将 www 重定向到非 www,解决了问题。
<virtualhost>
ServerAdmin [email protected]
ServerName yoursite.com
ServerAlias www.yoursite.com
DocumentRoot /var/www/yoursite.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# You must your the <directory> container. For more information see filesystem containers
# http://httpd.apache.org/docs/current/sections.html#virtualhost
<directory />
# You more than likely can the remove the <ifModule> container as your Rewrite
# Engine is probably turned on in your main server config file
# (check here: /etc/apache2/apache2.conf) but it is here for structure.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
# Redirects WWW URL's to Non-WWW URL's
<IfModule mod_rewrite.c>
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
# If there is a specific directory within your Virtual Host that you wanted to
# modify, you would have to nest another <directory> container within the root directory
# of virtual host previously declared with reference to the directory.
<directory /some-directory>
# your rules would go here.
</directory>
</directory>