的.htaccess不工作(mod_rewrite的) [英] .htaccess not working (mod_rewrite)

查看:163
本文介绍了的.htaccess不工作(mod_rewrite的)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

下面是我的.htaccess文件(位于@ /无功/网络/网站/主干/ HTML /)

 选项+的FollowSymLinks
RewriteEngine叙述上
的RewriteCond%{HTTP_HOST} ^ WWW \\(。*)[NC]
重写规则(。*)//%1 1 / $ [L,R = 301]

我的mod_rewrite的启用:

 根@ s15348441:在/ etc / apache2的/ MODS的可用#更多rewrite.load
的LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

我的Apache配置文件:

apache2.conf

 
#基于NCSA服务器的配置由罗布·麦库尔原来的文件。

#这是Apache服务器主要配置文件。它包含的
#配置指令,让服务器的指令。
#见http://httpd.apache.org/docs/2.2/有关的详细信息
#指令。

#不要只是简单的阅读说明书不求甚解
# 他们做什么。他们在这里只起提示。如果你不确定
#咨询在线文档。你被警告了。

#配置指令分为三个基本部分:
#1,指令控制Apache服务器进程的操作作为
#全(简称全球环境)。
#2.指令定义主或默认服务器的参数,
#该响应不是由虚拟主机处理请求。
#它也为设置提供默认值
#所有虚拟主机。
#3设置为虚拟主机,其允许Web请求被发送到
#不同的IP地址或主机名,并让他们在处理
#同一个Apache服务器进程。

#配置和日志文件名:如果文件名指定为许多
服务器的控制文件#开始/(或驱动器:/为Win32)中,
#服务器将使用绝对路径。如果文件名不*不*开始
#以/,ServerRoot的值是prepended - 如此/var/log/apache2/foo.log
#ServerRoot的带设置为将是由PTED间$ P $
#服务器作为//var/log/apache2/foo.log。
####第1节:全球环境

#本部分的指令将影响整个Apache服务器的操作,
#如并发请求数,它可以处理或地方
#可以找到它的配置文件。
##
#ServerRoot的:目录树的顶部根据该服务器的
#配置,错误和日志文件保存。

# 注意!如果你打算把这个在NFS(或其他网络)
#安装的文件系统,那么请阅读锁文件文档(可
#AT<网址:HTTP://httpd.apache.org/docs-2.1/mod/mpm_common.html#lockfile>);
#你能救自己很多麻烦。

#不要在目录路径的末尾添加斜线。

ServerRoot的在/ etc / apache2的#
#在接受串行锁文件必须存储在本地磁盘。

#<!IfModule mpm_winnt.c>
#<!IfModule mpm_netware.c>
与LockFile /var/lock/apache2/accept.lock
#< / IfModule>
#< / IfModule>#
#PIDFILE:其中服务器应记录其过程中的文件
#在启动时识别号码。
#这需要在/ etc / apache2的/ envvars中

PIDFILE $ {} APACHE_PID_FILE#
#超时:秒数之前接收和发送超时。

超时300#
#的KeepAlive:是否允许永久连接(超过
#每个连接一个请求)。设置为Off则停用。

上的KeepAlive#
#MaxKeepAliveRequests:请求允许的最大数量
在持久连接期间#。设置为0,允许无限量。
#我们推荐你离开这个数字高,以获得最佳性能。

MaxKeepAliveRequests 100#
#的KeepAliveTimeout:的秒数等待来自下一个请求
#在同一连接上相同的客户端。

15的KeepAliveTimeout##
##服务器池大小条例(MPM专用)
###prefork MPM
#StartServers的:服务器进程的数目开始
#的MinSpareServers:保有的备用服务器进程的最小数量
#MaxSpareServers的:保有的备用服务器进程的最大数量
#MaxClients的:服务器进程的最大数量不得开工
#MaxRequestsPerChild:请求的最大数量服务进程
< IfModule mpm_ prefork_module>
    StartServers的5
    比MinSpareServers 5
    MaxSpareServers的10
    MaxClients的150
    MaxRequestsPerChild 0
< / IfModule>#工人MPM
#StartServers的:服务器进程的初始数量开始
#MaxClients的:客户端同时连接的最大数目
#MinSpareThreads:保有的备用工作线程的最小数量
#MaxSpareThreads:保有的备用工作线程的最大数
#ThreadsPerChild是:在每个服务器进程的工作线程数不变
#MaxRequestsPerChild:请求的最大数量服务进程
< IfModule mpm_worker_module>
    StartServers的2
    MaxClients的150
    MinSpareThreads 25
    MaxSpareThreads 75
    ThreadsPerChild的25
    MaxRequestsPerChild 0
< / IfModule>#这些都需要在/ etc / apache2的/ envvars中
用户$ {} APACHE_RUN_USER
集团$ {} APACHE_RUN_GROUP#
#用来查找在每个目录中的文件的名称
#额外的配置指令。另见的AllowOverride
#指令。
#AccessFileName的.htaccess#
#以下行prevent的.htaccess和htpasswd文件被
#Web客户端查看。

<文件〜。^ \\ HT>
    为了允许,拒绝
    所有拒绝
< /文件>#
#DefaultType的是默认MIME类型服务器将使用为一个文件
#如果不能以其他方式确定的,如文件扩展名。
#如果你的服务器主要含有文本或HTML文档,text /纯是
#一个很好的价值。如果你的大多数内容是二进制的,如应用程序
或图片,你可能希望使用应用程序/八位字节流而不是
#防止浏览器,尽管它们是显示二进制文件
#文本。

缺省的类型文本/纯

#HostnameLookups:记录客户的姓名或只是它们的IP地址
#例如,www.apache.org(上)或204.62.129.132(关闭)。
#默认是关闭的,因为它会成为净如果人们总体较好
#不得不故意打开此功能,因为启用这意味着
#每个客户端请求将导致至少一个查找请求到
#域名服务器。

HostnameLookups关闭#错误日志:错误日志文件的位置。
#如果没有指定&LT内的ErrorLog指令,虚拟主机>
#集装箱,与该虚拟主机的错误信息会
#记录在这里。如果你做* *定义一个℃的错误日志文件,虚拟主机>
#集装箱,该主机的错误会被那里,没有记录在这里。

错误日志/var/log/apache2/error.log#
#LogLevel的:控制记录在error_log中的消息的数量。
#可能的值包括:调试,信息,通知,警告,错误,暴击,
#警报,EMERG。

LOGLEVEL警告#包括模块配置:
包括/etc/apache2/mods-enabled/*.load
包括/etc/apache2/mods-enabled/*.conf#包括所有用户配置:
包括/etc/apache2/httpd.conf#包括港口上市
包括/etc/apache2/ports.conf#
#下面的指令定义格式别名搭配使用
#CustomLog指令(见下文)。
#如果你是在反向代理服务器,您可能需要更改%H为%{X - 转发,对于我}

的LogFormat%H%L%U%T \\%r \\%> S%B \\%{Referer的}​​ I \\\\%{用户代理} I \\组合拳
的LogFormat%H%L%U%T \\%r \\%>%B的共同
的LogFormat%{Referer的}​​ I - >%U引荐
的LogFormat%{用户代理} I代理#
#ServerTokens
#这个指令配置返回什么作为服务器的HTTP响应
#头。默认值是完全,这将发送关于OS类型信息
#和模块编译。
#设置为之一:全|操作系统|未成年人|最小|主要|刺
#其中全部传达的信息最多,而正式版最少。

ServerTokens全#
#随意的添加包含服务器版本和虚拟主机线路
#名称服务器生成的网页(内部错误文档,FTP目录
列表,mod_status和mod_info输出等,但不产生CGI
#文件或自定义错误文档)。
#设为EMail将包含mailto:链接ServerAdmin的。
#设置为之一:|关|电子邮件

ServerSignature在

#可定制的错误响应有三种类型:
#1)纯文本2)本地重定向3)外部重定向

# 一些例子:
#ErrorDocument 500的服务器提出了布布。
#ErrorDocument 404 /missing.html
#ErrorDocument 404/cgi-bin/missing_handler.pl
#ErrorDocument 402 http://www.example.com/subscription_info.html
##
#把这个都在一起,我们可以国际化的错误响应。

#我们使用别名来重定向任何/error/HTTP_<error>.html.var响应
#我们收集由错误消息多语言的集合。我们用
#包括替代相应的文本。

#你可以改变这些消息的外观,而不改变任何的
#默认HTTP_&LT;错误&GT;添加以下行.html.var文件:

#别名/错误/包括//你/包括/路径/

#它允许您通过使用开始创建自己的文件集
#在/ usr /共享/的Apache2 /错误/包括/文件并将它们复制到/你/包括/路径/,
#甚至在每个虚拟主机的基础。默认的包含文件将显示
#Apache的版本号和您的ServerAdmin电子邮件地址不管
#ServerSignature的设置。

#国际化的错误文档需要mod_alias中,mod_include负责
#和mod_negotiation模块。要激活它们,取消以下30行。#别名/错误/的/ usr /共享/的Apache2 /错误/

#&LT;目录的/ usr /共享/的Apache2 /错误&GT;
#设置AllowOverride无
#选项IncludesNoExec
#AddOutputFilter包括HTML
#AddHandler的类型映射变种
#订购允许,拒绝
#所有允许
#LanguagePriority恩CS去ES FR IT NL SV PT-BR RO
#ForceLanguagePriority preFER回退
#&LT; /目录&GT;

#400的ErrorDocument /error/HTTP_BAD_REQUEST.html.var
#401的ErrorDocument /error/HTTP_UNAUTHORIZED.html.var
#403的ErrorDocument /error/HTTP_FORBIDDEN.html.var
#404的ErrorDocument /error/HTTP_NOT_FOUND.html.var
#405的ErrorDocument /error/HTTP_METHOD_NOT_ALLOWED.html.var
#408的ErrorDocument /error/HTTP_REQUEST_TIME_OUT.html.var
#410的ErrorDocument /error/HTTP_GONE.html.var
#411的ErrorDocument /error/HTTP_LENGTH_REQUIRED.html.var
#412的ErrorDocument /error/HTTP_$p$pCONDITION_FAILED.html.var
#413的ErrorDocument /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
#414的ErrorDocument /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
#415的ErrorDocument /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
#500的ErrorDocument /error/HTTP_INTERNAL_SERVER_ERROR.html.var
#501的ErrorDocument /error/HTTP_NOT_IMPLEMENTED.html.var
#502的ErrorDocument /error/HTTP_BAD_GATEWAY.html.var
#503的ErrorDocument /error/HTTP_SERVICE_UNAVAILABLE.html.var
#506的ErrorDocument /error/HTTP_VARIANT_ALSO_VARIES.html.var目录#包括忽略编辑和dpkg的备份文件,
#见README.Debian所有详情。#包括语句通用片段
包括/etc/apache2/conf.d/#包括虚拟主机配置:
包括在/ etc /启用站点-的Apache2 / /

有关WWW我的默认配置文件在Apache

 了NameVirtualHost *:80
&LT;虚拟主机*:80&GT;
    的ServerAdmin info@example.com    #SSLEnable
    #SSLVerifyClient无
    #SSLCertificateFile /usr/local/ssl/crt/public.crt
    #SSLCertificateKeyFile /usr/local/ssl/private/private.key    DocumentRoot的/无功/网络/网站/主干/ HTML
    &LT;目录/&GT;
    有FollowSymLinks
    所有的AllowOverride
    &LT; /目录&GT;
    &LT;目录/ var /网络/网站/主干/ HTML&GT;
    选择指数多视图了FollowSymLinks
    所有的AllowOverride
    为了允许,拒绝
    所有允许
    &LT; /目录&GT;    ScriptAlias​​指令/的cgi-bin / / usr / lib目录/ cgi-bin目录/
    &LT;目录/ usr / lib目录/ cgi-bin目录&GT;
    设置AllowOverride无
    选项​​+ ExecCGI -MultiViews + SymLinksIfOwnerMatch
    为了允许,拒绝
    所有允许
    &LT; /目录&GT;    错误日志/var/log/apache2/error.log    #可能的值包括:调试,信息,通知,警告,错误,暴击,
    #警报,EMERG。
    LOGLEVEL警告    的CustomLog /var/log/apache2/access.log结合
    ServerSignature在    别名/ DOC /的/ usr /共享/ DOC /
    &LT;目录的/ usr /共享/ DOC /&GT;
        选择多视图索引了FollowSymLinks
        设置AllowOverride无
        为了否认,允许
        所有拒绝
        从127.0.0.0/255.0.0.0允许:: 1/128
    &LT; /目录&GT;&LT; /虚拟主机&GT;

我的SSL配置文件

  *了NameVirtualHost:443
&LT;虚拟主机*:443&GT;
    的ServerAdmin info@example.com    #SSLEnable
    #SSLVerifyClient无
    #SSLCertificateFile /usr/local/ssl/crt/public.crt
    #SSLCertificateKeyFile /usr/local/ssl/private/private.key    DocumentRoot的/无功/网络/网站/主干/ HTML
    &LT;目录/&GT;
    有FollowSymLinks
    所有的AllowOverride
    &LT; /目录&GT;
    &LT;目录/ var /网络/网站/主干/ HTML&GT;
    选择指数多视图了FollowSymLinks
    所有的AllowOverride
    为了允许,拒绝
    所有允许
    &LT; /目录&GT;    ScriptAlias​​指令/的cgi-bin / / usr / lib目录/ cgi-bin目录/
    &LT;目录/ usr / lib目录/ cgi-bin目录&GT;
    设置AllowOverride无
    选项​​+ ExecCGI -MultiViews + SymLinksIfOwnerMatch
    为了允许,拒绝
    所有允许
    &LT; /目录&GT;    错误日志/var/log/apache2/error.log    #可能的值包括:调试,信息,通知,警告,错误,暴击,
    #警报,EMERG。
    LOGLEVEL警告    SSLEngine的在
        了SSLCertificateFile /usr/local/ssl/crt/public.crt
        了SSLCertificateKeyFile /usr/local/ssl/private/private.key
    的CustomLog /var/log/apache2/access.log结合
    ServerSignature在    别名/ DOC /的/ usr /共享/ DOC /
    &LT;目录的/ usr /共享/ DOC /&GT;
        选择多视图索引了FollowSymLinks
        设置AllowOverride无
        为了否认,允许
        所有拒绝
        从127.0.0.0/255.0.0.0允许:: 1/128
    &LT; /目录&GT;&LT; /虚拟主机&GT;

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

目录/etc/apache2/conf.d没有任何关系,但一个文件(字符集)

/etc/apache2/conf.dcharset内容

 #阅读使AddDefaultCharset收到的文件。
#在一般情况下,它仅仅是一个好主意,如果你知道你的所有文件
#有这个编码。它将覆盖文件给出任何编码
#在META HTTP-当量或XML编码标签。#AddDefaultCharset UTF-8

我的Apache的error.log

  [周三6月3日0时12分31秒2009] [错误] [客户216.168.43.234]客户端发送的HTTP /无主机1.1请求(参见RFC2616节14.23):/ w00tw00t。 at.ISC.SANS.DFind :)
[星期三6月03 2009年5时03分51秒] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[星期三6月03 2009年5时03分54秒] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[周三6月03五时十三分48秒2009] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[星期三6月03 2009年5时13分51秒] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[周三6月03五时十三分54秒2009] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[星期三6月03 2009年5时13分57秒] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[周三6月03五点17分28秒2009] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[星期三6月03 2009年5点26分23秒] [声明]抓SIGWINCH,正常关闭
[星期三6月03 2009年5时26分34秒] [声明]的Apache / 2.2.8(Ubuntu的)PHP / 5.2.4-2ubuntu5.6用了Suhosin-补丁了mod_ssl / 2.2.8的OpenSSL / 0.9.8g配置 - 恢复正常操作
[星期三6月03 2009年6点03分41秒] [声明]抓SIGWINCH,正常关闭
[星期三6月03 2009年6点03分51秒] [声明]的Apache / 2.2.8(Ubuntu的)PHP / 5.2.4-2ubuntu5.6用了Suhosin-补丁了mod_ssl / 2.2.8的OpenSSL / 0.9.8g配置 - 恢复正常操作
[星期三6月03 2009年6点25分07秒] [声明]抓SIGWINCH,正常关闭
[周三6月03六点25分17秒2009] [声明]的Apache / 2.2.8(Ubuntu的)PHP / 5.2.4-2ubuntu5.6用了Suhosin-补丁了mod_ssl / 2.2.8的OpenSSL / 0.9.8g配置 - 恢复正常操作
[周三6月03 12点09分25秒2009] [错误] [客户61.139.105.163]文件不存在:/无功/网络/网站/主干/ HTML / fastenv
[周三6月03 15点04分42秒2009] [声明]平滑重启的要求,做重启
[周三6月03 15点04分43秒2009] [声明]的Apache / 2.2.8(Ubuntu的)PHP / 5.2.4-2ubuntu5.6用了Suhosin-补丁了mod_ssl / 2.2.8的OpenSSL / 0.9.8g配置 - 恢复正常操作
[周三6月03 15点29分51秒2009] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[周三6月03 15点29分54秒2009] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[周三6月03 15点30分32秒2009] [错误] [客户99.247.237.46]文件不存在:/var/www/site/trunk/html/favicon.ico
[周三6月03 15点45分54秒2009] [声明]抓住了SIGWINCH,正常关闭
[周三6月03 15点46分05秒2009] [声明]的Apache / 2.2.8(Ubuntu的)PHP / 5.2.4-2ubuntu5.6用了Suhosin-补丁了mod_ssl / 2.2.8的OpenSSL / 0.9.8g配置 - 恢复正常操作


解决方案

由于Vinko说,

  RewriteLog/tmp/rewrite.log
RewriteLogLevel 9

和看该文件。

另外,这里我们使用从zirconium.zrs.hr/~zatemas重定向到zatemas.zrs.hr的code:

  RewriteEngine叙述上#为80以外的端口上运行的网站
的RewriteCond%{HTTP_HOST} ^!zatemas \\ .zrs \\ .HR [NC]
的RewriteCond%{HTTP_HOST}!^ $
的RewriteCond%{SERVER_PORT}!^ $ 80
重写规则^ /〜zatemas /(.*)http://zatemas.zrs.hr:%{SERVER_PORT}/$1 [L,R]#而对于网站上的端口80上运行
的RewriteCond%{HTTP_HOST}!^ 192 \\ .168 \\ .1 \\ 0.24 [NC]
的RewriteCond%{HTTP_HOST} ^!zatemas \\ .zrs \\ .HR [NC]
的RewriteCond%{HTTP_HOST}!^ $
重写规则^ /〜zatemas /(.*)http://zatemas.zrs.hr/$1 [L,R]

我已经看到了网络上,人们HTTPS检测主要通过查看该端口是否为443的 mod_rewrite的文档说应该设置为打开或关闭可变HTTPS,适当的 - 我presume您的RewriteCond%{} HTTPS上^ $ 来测试,如果它在

同时还要注意:的.htaccess URL重写指令,如果你的用户的主目录访问文件没有很好地工作 - 例如example.com/~username/ 。根据您的情况不应该打扰你,虽然。我的code以上(放置于主服务器的配置,在虚拟主机部分更precisely,在的/ etc / apache2的/网站 - 启用/ 000-默认,但这是具体的Debian和主要配置被合并)。

I have not having any luck getting my .htaccess with mod_rewrite working. Basically all I am trying to do is remove 'www' from "http://www.example.com" and "https://www.example.com".

If there is anything I am missing (conf files, etc let me know I willl update this)

Here is my .htaccess file (located @ /var/www/site/trunk/html/)

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

My mod_rewrite is enabled:

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

My apache config files:

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
# e.g., 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/

My default config file for www on apache

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>

My ssl config file

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>

My /etc/apache2/httpd.conf is blank

The directory /etc/apache2/conf.d has nothing in it but one file (charset)

contents of /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

My 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

解决方案

As Vinko said,

RewriteLog "/tmp/rewrite.log"
RewriteLogLevel 9

and look at that file.

Otherwise, here's the code we're using to redirect from zirconium.zrs.hr/~zatemas to 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]

I've seen around the web that people detect HTTPS primarily by looking if the port is 443. mod_rewrite documentation says there should be a variable HTTPS set to on or off, appropriately - I presume you do RewriteCond %{HTTPS} ^on$ to test if it's on.

Also watch out: .htaccess directives for URL rewriting do not work nicely if you're accessing files in user's home directory - for example example.com/~username/. That should not bother you according to your scenario, though. My code above is placed in main server config, under the VirtualHost section(more precisely, in /etc/apache2/sites-enabled/000-default, but that's debian specific and gets merged in main config).

这篇关于的.htaccess不工作(mod_rewrite的)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆