.htaccess不工作(mod_rewrite)

我没有任何运气让我的.htaccess与mod_rewrite工作。 基本上我所要做的就是从“ http://www.example.com ”和“ https://www.example.com ”中删除“www”。

如果有什么我失踪(conf文件等让我知道我会更新这个)

这里是我的.htaccess文件(位于@ / var / www / site / trunk / html /)

Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) //%1/$1 [L,R=301] 

我的mod_rewrite已启用:

 root@s15348441:/etc/apache2/mods-available# more rewrite.load LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

我的apacheconfiguration文件:

apache2.conf

 # # Based upon the NCSA server configuration files originally by Rob McCool. # # This is the main Apache server configuration file. It contains the # configuration directives that give the server its instructions. # See http://httpd.apache.org/docs/2.2/ for detailed information about # the directives. # # Do NOT simply read the instructions in here without understanding # what they do. They're here only as hints or reminders. If you are unsure # consult the online docs. You have been warned. # # The configuration directives are grouped into three basic sections: # 1. Directives that control the operation of the Apache server process as a # whole (the 'global environment'). # 2. Directives that define the parameters of the 'main' or 'default' server, # which responds to requests that aren't handled by a virtual host. # These directives also provide default values for the settings # of all virtual hosts. # 3. Settings for virtual hosts, which allow Web requests to be sent to # different IP addresses or hostnames and have them handled by the # same Apache server process. # # Configuration and logfile names: If the filenames you specify for many # of the server's control files begin with "/" (or "drive:/" for Win32), the # server will use that explicit path. If the filenames do *not* begin # with "/", the value of ServerRoot is prepended -- so "/var/log/apache2/foo.log" # with ServerRoot set to "" will be interpreted by the # server as "//var/log/apache2/foo.log". # ### Section 1: Global Environment # # The directives in this section affect the overall operation of Apache, # such as the number of concurrent requests it can handle or where it # can find its configuration files. # # # ServerRoot: The top of the directory tree under which the server's # configuration, error, and log files are kept. # # NOTE! If you intend to place this on an NFS (or otherwise network) # mounted filesystem then please read the LockFile documentation (available # at <URL:http://httpd.apache.org/docs-2.1/mod/mpm_common.html#lockfile>); # you will save yourself a lot of trouble. # # Do NOT add a slash at the end of the directory path. # ServerRoot "/etc/apache2" # # The accept serialization lock file MUST BE STORED ON A LOCAL DISK. # #<IfModule !mpm_winnt.c> #<IfModule !mpm_netware.c> LockFile /var/lock/apache2/accept.lock #</IfModule> #</IfModule> # # PidFile: The file in which the server should record its process # identification number when it starts. # This needs to be set in /etc/apache2/envvars # PidFile ${APACHE_PID_FILE} # # Timeout: The number of seconds before receives and sends time out. # Timeout 300 # # KeepAlive: Whether or not to allow persistent connections (more than # one request per connection). Set to "Off" to deactivate. # KeepAlive On # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests 100 # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 15 ## ## Server-Pool Size Regulation (MPM specific) ## # prefork MPM # StartServers: number of server processes to start # MinSpareServers: minimum number of server processes which are kept spare # MaxSpareServers: maximum number of server processes which are kept spare # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 150 MaxRequestsPerChild 0 </IfModule> # worker MPM # StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connections # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: constant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves <IfModule mpm_worker_module> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> # These need to be set in /etc/apache2/envvars User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} # # AccessFileName: The name of the file to look for in each directory # for additional configuration directives. See also the AllowOverride # directive. # AccessFileName .htaccess # # The following lines prevent .htaccess and .htpasswd files from being # viewed by Web clients. # <Files ~ "^\.ht"> Order allow,deny Deny from all </Files> # # DefaultType is the default MIME type the server will use for a document # if it cannot otherwise determine one, such as from filename extensions. # If your server contains mostly text or HTML documents, "text/plain" is # a good value. If most of your content is binary, such as applications # or images, you may want to use "application/octet-stream" instead to # keep browsers from trying to display binary files as though they are # text. # DefaultType text/plain # # HostnameLookups: Log the names of clients or just their IP addresses # eg, www.apache.org (on) or 204.62.129.132 (off). # The default is off because it'd be overall better for the net if people # had to knowingly turn this feature on, since enabling it means that # each client request will result in AT LEAST one lookup request to the # nameserver. # HostnameLookups Off # ErrorLog: The location of the error log file. # If you do not specify an ErrorLog directive within a <VirtualHost> # container, error messages relating to that virtual host will be # logged here. If you *do* define an error logfile for a <VirtualHost> # container, that host's errors will be logged there and not here. # ErrorLog /var/log/apache2/error.log # # LogLevel: Control the number of messages logged to the error_log. # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. # LogLevel warn # Include module configuration: Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf # Include all the user configurations: Include /etc/apache2/httpd.conf # Include ports listing Include /etc/apache2/ports.conf # # The following directives define some format nicknames for use with # a CustomLog directive (see below). # If you are behind a reverse proxy, you might want to change %h into %{X-Forwarded-For}i # LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent # # ServerTokens # This directive configures what you return as the Server HTTP response # Header. The default is 'Full' which sends information about the OS-Type # and compiled in modules. # Set to one of: Full | OS | Minor | Minimal | Major | Prod # where Full conveys the most information, and Prod the least. # ServerTokens Full # # Optionally add a line containing the server version and virtual host # name to server-generated pages (internal error documents, FTP directory # listings, mod_status and mod_info output etc., but not CGI generated # documents or custom error documents). # Set to "EMail" to also include a mailto: link to the ServerAdmin. # Set to one of: On | Off | EMail # ServerSignature On # # Customizable error responses come in three flavors: # 1) plain text 2) local redirects 3) external redirects # # Some examples: #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html # # # Putting this all together, we can internationalize error responses. # # We use Alias to redirect any /error/HTTP_<error>.html.var response to # our collection of by-error message multi-language collections. We use # includes to substitute the appropriate text. # # You can modify the messages' appearance without changing any of the # default HTTP_<error>.html.var files by adding the line: # # Alias /error/include/ "/your/include/path/" # # which allows you to create your own set of files by starting with the # /usr/share/apache2/error/include/ files and copying them to /your/include/path/, # even on a per-VirtualHost basis. The default include files will display # your Apache version number and your ServerAdmin email address regardless # of the setting of ServerSignature. # # The internationalized error documents require mod_alias, mod_include # and mod_negotiation. To activate them, uncomment the following 30 lines. # Alias /error/ "/usr/share/apache2/error/" # # <Directory "/usr/share/apache2/error"> # AllowOverride None # Options IncludesNoExec # AddOutputFilter Includes html # AddHandler type-map var # Order allow,deny # Allow from all # LanguagePriority en cs de es fr it nl sv pt-br ro # ForceLanguagePriority Prefer Fallback # </Directory> # # ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var # ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var # ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var # ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var # ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var # ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var # ErrorDocument 410 /error/HTTP_GONE.html.var # ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var # ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var # ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var # ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var # ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var # ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var # ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var # ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var # ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var # ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var # Include of directories ignores editors' and dpkg's backup files, # see README.Debian for details. # Include generic snippets of statements Include /etc/apache2/conf.d/ # Include the virtual host configurations: Include /etc/apache2/sites-enabled/ 

我在Apache上的默认configuration文件www

 NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin info@example.com #SSLEnable #SSLVerifyClient none #SSLCertificateFile /usr/local/ssl/crt/public.crt #SSLCertificateKeyFile /usr/local/ssl/private/private.key DocumentRoot /var/www/site/trunk/html <Directory /> Options FollowSymLinks AllowOverride all </Directory> <Directory /var/www/site/trunk/html> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> 

我的SSLconfiguration文件

 NameVirtualHost *:443 <VirtualHost *:443> ServerAdmin info@example.com #SSLEnable #SSLVerifyClient none #SSLCertificateFile /usr/local/ssl/crt/public.crt #SSLCertificateKeyFile /usr/local/ssl/private/private.key DocumentRoot /var/www/site/trunk/html <Directory /> Options FollowSymLinks AllowOverride all </Directory> <Directory /var/www/site/trunk/html> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn SSLEngine On SSLCertificateFile /usr/local/ssl/crt/public.crt SSLCertificateKeyFile /usr/local/ssl/private/private.key CustomLog /var/log/apache2/access.log combined ServerSignature On Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost> 

我的/etc/apache2/httpd.conf是空白的

目录/etc/apache2/conf.d没有任何内容,只有一个文件(字符集)

/etc/apache2/conf.dcharset的内容

 # Read the documentation before enabling AddDefaultCharset. # In general, it is only a good idea if you know that all your files # have this encoding. It will override any encoding given in the files # in meta http-equiv or xml encoding tags. #AddDefaultCharset UTF-8 

我的Apache的error.log

 [Wed Jun 03 00:12:31 2009] [error] [client 216.168.43.234] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:) [Wed Jun 03 05:03:51 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:03:54 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:13:48 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:13:51 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:13:54 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:13:57 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:17:28 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 05:26:23 2009] [notice] caught SIGWINCH, shutting down gracefully [Wed Jun 03 05:26:34 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g configured -- resuming normal operations [Wed Jun 03 06:03:41 2009] [notice] caught SIGWINCH, shutting down gracefully [Wed Jun 03 06:03:51 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g configured -- resuming normal operations [Wed Jun 03 06:25:07 2009] [notice] caught SIGWINCH, shutting down gracefully [Wed Jun 03 06:25:17 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g configured -- resuming normal operations [Wed Jun 03 12:09:25 2009] [error] [client 61.139.105.163] File does not exist: /var/www/site/trunk/html/fastenv [Wed Jun 03 15:04:42 2009] [notice] Graceful restart requested, doing restart [Wed Jun 03 15:04:43 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g configured -- resuming normal operations [Wed Jun 03 15:29:51 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 15:29:54 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 15:30:32 2009] [error] [client 99.247.237.46] File does not exist: /var/www/site/trunk/html/favicon.ico [Wed Jun 03 15:45:54 2009] [notice] caught SIGWINCH, shutting down gracefully [Wed Jun 03 15:46:05 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g configured -- resuming normal operations 

Solutions Collecting From Web of ".htaccess不工作(mod_rewrite)"

温科说,

 RewriteLog "/tmp/rewrite.log" RewriteLogLevel 9 

并看看那个文件。

否则,下面是我们用于从zirconium.zrs.hr/~zatemas重定向到zatemas.zrs.hr的代码:

 RewriteEngine on # For sites running on a port other than 80 RewriteCond %{HTTP_HOST} !^zatemas\.zrs\.hr [NC] RewriteCond %{HTTP_HOST} !^$ RewriteCond %{SERVER_PORT} !^80$ RewriteRule ^/~zatemas/(.*) http://zatemas.zrs.hr:%{SERVER_PORT}/$1 [L,R] # And for a site running on port 80 RewriteCond %{HTTP_HOST} !^192\.168\.1\.24 [NC] RewriteCond %{HTTP_HOST} !^zatemas\.zrs\.hr [NC] RewriteCond %{HTTP_HOST} !^$ RewriteRule ^/~zatemas/(.*) http://zatemas.zrs.hr/$1 [L,R] 

我在网上看到,人们主要通过查看端口是否为443来检测HTTPS。mod_rewrite文档说应该有一个变量HTTPS设置为打开或关闭,适当的 – 我假设你RewriteCond %{HTTPS} ^on$ to RewriteCond %{HTTPS} ^on$RewriteCond %{HTTPS} ^on$测试它是否开启。

另外请注意:如果您访问用户主目录中的文件,URL重写的.htaccess指令不能很好地工作,例如example.com/~username/。 不过,根据你的情况,这不应该打扰你。 我上面的代码放在主服务器配置下的VirtualHost部分(更确切地说,在/etc/apache2/sites-enabled/000-default ,但这是debian特定的,并在主配置合并)。

你可以很容易地测试你的htaccess是否被读取:

  • 把垃圾放进去,就像:

     Options +FollowSymLinks This is garbage RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) //%1/$1 [L,R=301] 

    如果你得到一个500错误(内部服务器错误),那么它正在被读取。

    如果是这样,你应该在主服务器配置(而不是.htaccess)中启用RewriteLog,如下所示:

     RewriteLog "/tmp/rewrite.log" RewriteLogLevel 9 

然后检查文件/tmp/rewrite.log看看发生了什么。 报告结果。

(堆栈溢出不是一个好的调试媒介,IRC更好,尝试#apache@irc.freenode.net)

祝你好运。

在我的情况下,我改变了httpd.conf:

AllowOverride无

AllowOverride全部

它的工作。

 RewriteEngine on RewriteCond %{HTTPS} =on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ https://%1$1 [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1$1 [L,R=301] 

从其他答案两个轻微的变化:

RewriteRule%1反向引用从最后匹配的RewriteCond ,因此在主机名中检查www 之前必须检查HTTPS。

%1$1在中间不需要斜线,因为你可以从RewriteRule的路径匹配中获得。

最后一条建议:由于您可以控制Apache主配置中的VirtualHost部分,因此将这些规则放在那里会更快。 另外,你需要把它们分开,把普通的HTTP分为*:80和HTTPS分别放在*:443,这意味着你可以完全删除RewriteCond %{HTTPS} =on ,因为它只适用于那个虚拟主机的请求。

这听起来像你说你的mod_rewrite根本不工作。 这里有几件事要尝试:

你说这是启用,但提供的信息:

 root@s15348441:/etc/apache2/mods-available# more rewrite.load Loadmodulee rewrite_module /usr/lib/apache2/modules/mod_rewrite.so 

只是显示在“mods-available”文件夹下,这意味着它被安装,但不一定打开。 如果启用,它应该在“mods-enabled”文件夹下进行符号链接(如果不存在,您需要对其进行修改 )

如果启用,并且已经重新启动,下一步将是启用mod重写的日志记录功能 ; 这是一个很好的调试工具。

编辑添加:您可以将mod重写移到基本配置。 如果你有权访问它,建议把你的配置放在基本部分(见这里 )。 确定它是否与mod_rewrite有关(比如你的allowoverrides变得困惑)或纯粹是一个htaccess问题也更容易。

继续 :(@ Vinko Vrsalovic是正确的,这是一个很难调试的媒介)如果你把它移到你的基本配置,它仍然没有工作,那么我们到了一些东西,你已经消除了.htaccess部分。 你应该发布新的配置,以及重写日志。 如果你没有得到一个重写日志,那么1)你的配置没有被加载(需要重新启动apache)或者2)你不打你认为你的配置部分

首先,检查确保mod_rewrite实际上正在加载。 你可以用apache2ctl来做到这一点:

 [root@host ~]# apache2ctl -t -D DUMP_MODULES 2>&1 |grep rewrite rewrite_module (shared) 

如果不是,那么你可能需要运行'a2enmod rewrite'

接下来,测试是否正在读取.htaccess文件。 我通常通过在.htaccess文件中添加一些垃圾,然后在浏览器中加载该目录中的一个页面,并验证我得到一个500错误

正如其他人所提到的,如果你有能力直接修改你的Apache配置,你应该把重写规则放在那里,而不是放在.htaccess文件中,因为效率不高。 Apache必须首先决定在哪个目录中查找.htaccess文件,然后读取它,然后执行重写。 如果在VirtualHost指令中指定了RewriteRules,那么它可以在找到.htaccess文件之前执行它们。 在VirtualHost中指定它们也意味着正在读取.htaccess文件并不重要。 它看起来像这样:

  <VirtualHost *:80> .... existing config .... RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) http://%1/$1 [L,R=301] </VirtualHost> <VirtualHost *:443> .... existing config .... RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) https://%1/$1 [L,R=301] </VirtualHost> 

上述解决方案都不适合我。 我运行CentOS使用每个目录上下文为Apache …没有VirtualHosts或任何东西。 没有任何我尝试工作,直到我注意到NameVirtualHost默认情况下在我的配置…关闭后,一切似乎工作A – 确定。

我有同样的问题,这浪费了我5个小时来修复。

所以为了使用mod_rewrite,你可以在终端中输入以下命令:

 a2enmod rewrite 

然后重新启动你的Apache。

我在使用新的CentOS 6安装mod_rewrite时遇到了问题。 没有任何工作,直到我不小心看到有两个AllowOverridehttpd.conf 。 一个在<Directory />里面,另一个在<Directory "/var/www/html"> 。 我将这两个值都更改为全部 ,然后它的工作。 希望它可以帮助别人!

PS我没有使用虚拟主机

我有一个类似的问题..Mod重写启用,.htaccess权限是正确的,AllowOverride设置为所有,但.htaccess不被读取。 经过几个小时的痛苦和寻找答案这是我的问题是:(希望这可以帮助任何人)

除了我正在测试的另一个虚拟主机站点之外,我还启用了另一个虚拟主机站点,它共享了一个通用的目录根目录(/ var / www),另一个站点的AllowOverride被设置为none。 解决方案是简单地禁用其他网站与“a2dissite”

这个重写规则怎么样?

 RewriteEngine On RewriteCond %{HTTP_HOST} ^www.example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 

对我来说,一个符号链接丢失了

 ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load 

试试这个小窍门:

 RewriteEngine on RewriteCond %{HTTPS}s/%{HTTP_HOST} ^(on(s)|[^/]+)/www\.(.+) [NC] RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301] 

或这个:

 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteCond %{HTTP_PORT} =443 RewriteRule (.*) https://%1/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule (.*) http://%1/$1 [L,R=301] 

什么是.htaccess文件的文件权限?

我不确定,但我认为它需要644。

我有类似的问题,这是为我工作。

在你的httpd.conf中,在虚拟主机下,确保你有两个:

serverName domain.com

serverAlias http://www.domain.com

VirtualHost *:80 AND VirtualHost *:443