Articles of apache 2.2

Apacheconfiguration文件可视化/testing

是否有可用的工具(或Apache中内置的debugging模式),可以交互式地testing和解释给定请求的Apacheconfiguration? 特别是,我希望能够看到哪些指令将适用于请求特定的URL。 例如,URL http://myserver.com/foo/bar/bar.html的输出可能如下所示: Allow from 192.168.0.3 <– From <Location /foo/bar> in myserver.com vhost Require valid user <– From <Directory /var/www/foo> in global configuration Satisfy any <– From <File bar.html> in global configuration [背景:为什么我要这个? configuration指令的Apache合并规则是相当复杂的,以获得正确的。 有一个工具可以让你检查你的规则是否正是你想要的,而且是一个很好的学习工具。 如果没有这样的工具,Apache中是否有一个debugging选项可以logging每个传入请求的这些信息?

如何存储要在Apache中使用的非标准HTTP请求头的值如果有条件的话

我的服务器将收到一个名为EmployeeID的非标准HTTP请求,我想用它来确定对服务器上某些目录的访问权限。 如何存储传入的非标准HTTP请求头的值,以便可以在使用Apache指令的If条件中使用它? 在网上search了很长一段时间后,我想出了以下的地方,我试图使用RewriteRule将头文件保存到一个环境variables中,这样我可以稍后访问variables的值来进行比较。 不幸的是,我只遇到挫折而不是成功。 <Direcory "\Apache24\htdocs\usrs"> RewriteEngine on RewriteRule .* – [E=EmployeeID:%{HTTP:EmployeeID}] <If "{Request_URI} != /%{EmployeeID}/"> Deny from all </If> </Directory">

如何强制一个子域作为默认域,但保持其他子域的工作?

我在http://www.example.com上安装了WordPress网站,在http://test.example.com上安装了另一个WordPress网站。 我用这个.htaccess代码成功地将http://www.example.comredirect到了http://beta.example.com : RewriteCond %{HTTP_HOST} !^beta\.example\.com RewriteRule ^(.*)$ http://beta.example.com/$1 [R=301,L] 但是,当尝试访问http://test.example.com它会强制它发生http://beta.example.com/test/并显示404错误。 有没有办法让这个testing版redirect,但仍然保持我的WordPress网站http://test.example.com工作?

从Django 1.4升级到Django 1.5时“导入中间件时出错”?

我有一个安装了Python 2.7.2的共享主机帐户。 我做了本地安装的Django的1.4( python setup.py install –user ),一切工作正常。 我决定升级到服务器上的Django 1.5,因为我用Django 1.5在本地testing了应用程序,并且一切正常。 但是,运行升级( python setup.py install –user ,与上次相同)后,服务器开始引发HTTP 500错误。 Apache错误日志的快速检查显示: [Fri Jul 12 00:14:01 2013] [error] [client 127.0.0.1] ImproperlyConfigured: Error importing middleware django.contrib.auth.middleware: "cannot import name _doctest" 任何想法可能会导致这一点? 这个错误似乎表明auth中间件组件有问题 – 它试图加载一个不存在的模块( _doctest )(我可以用import _doctest来确认)。 与此同时,我立即恢复到Django 1.4,一切都恢复正常。

.htaccess域目录不能正确parsingdomain.com/domain

我有2个域指向相同的IP foo.com和bar.com 我没有权限为域设置虚拟主机,但是我已经设法创build了.htaccess规则,以便像这样设置。 foo.com指向/目录 bar.com指向/ bar目录 现在有了上面的设置,我可以有不同的index.html文件来访问域的根目录。 这是我为bar.com实施的规则 RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com$ RewriteCond %{REQUEST_URI} !bar/ RewriteRule ^(.*)$ bar/$1 [L] 上面的规则完美地工作,但是当我浏览到bar.com/bar它不给我一个404 ,而是它仍然指向我的bar目录的根。 所以,我创build了另一个RewriteCond来处理这个问题。 RewriteCond %{HTTP_HOST} ^(www\.)?bar\.com$ RewriteCond %{THE_REQUEST} "(GET|POST) \/bar\/ HTTP/" 而RewriteCond完美的工作。 我不知道什么重写规则我会写,所以当用户访问bar.com/bar它会指向/bar/bar目录,因此会给我一个404 我试过下面的RewriteRule ,但似乎没有工作 RewriteRule ^bar/(.*)$ bar/bar/$1 [L,QSA] 所以我暂时创build了一个redirect到主bar.com域。 RewriteRule ^bar/(.*)$ http://bar.com/$1 [L,QSA,R=301]

codeignitor Halogy重写问题

我正在使用名为halogy的CMS构build了codeignitor,但无法弄清楚如何让它在IIS中正常工作。 我认为它与Apache的重写(在Apache上正常工作)和.htacess文件内容有关 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) index.php/$1 [L] 希望有人可以将其转换为IIS的configuration文件,谢谢大家。

有没有办法让Apache监听一个接口而不是一个地址?

这可能是一个XY问题:我希望能够克隆和销毁云服务器,而不是重新configurationApache的Listen指令,只有负载均衡器可以访问。 但是我实际上并不关心IP地址是什么 – 它是接口所具有的任何IP地址。 但是通过Apache文档来看,似乎只能给Listen一个ip地址,而不是一个接口。 有没有办法指定Apache应该监听特定的接口? 我拥有的: NameVirtualHost *:80 Listen 10.177.19.174:80 我想要的是: NameVirtualHost *:80 Listen eth1:80

为什么我不能在没有错误的情况下更改Apache的文档根目录?

我试图改变我的文档在Apache的根,所以我可以开始一个新的项目,并保持一个旧的可用,所以我可以参考文件。 每当我尝试更改文档根目录时,我都会收到一个403 Forbidden错误。 这似乎我已经尝试了一切。 在httpd.conf文件中,我更改文档根行和括号中的行: DocumentRoot "/Full/Path/To/Root" <DIRECTORY /Full/Path/To/Root /> I'm not looking at the file right now, but I've changed this part too 我把新的根目录放在默认的相同位置,所以这些权限应该是确定的。 我已经将根目录的权限更改为777和744,它仍然无法正常工作。 我花了很多时间寻找一个可行的解决scheme,但到目前为止,没有任何工作。 在Apache的错误日志中,出现的信息是“由于服务器configuration而拒绝了权限”(当我有机会find确切的信息时,我会确定并发布它)。 任何帮助,非常感激。 我使用Apache v2和php 5.5运行Mac OS Lion(如果有的话)。 编辑:错误日志中的错误说[服务器configuration:/库/ Web服务器/定制服务器/客户端拒绝] [客户端fe80 :: 1]客户端拒绝[错误日志7月22日14:43:38 2013]

无法从LAN中的另一台机器访问Tomcat

我有两个Web应用程序在Apache HTTP服务器上运行,这些应用程序使用端口8080和100.最近我已经安装了Apache Tomcat 7.0.42,并且已经将server.xml的端口号从8080更改为9999,作为Apache HTTP Server已经在使用8080了。 我能够使用localhost:9999和IP Address:9999从本地机器访问Tomcat。 但是我无法使用IP Address:9999另一台机器的IP Address:9999访问Tomcat服务器。 我可以从另一台机器上访问在端口8080和100上运行的其他应用程序。 要检查是否有任何端口问题,我停止了使用8080的应用程序,并将相同的端口给予Tomcat,但仍然无法从另一台机器访问Tomcat。 所以很明显这不是港口问题。 我认为Tomcat不接受远程请求,我假设我需要在server.xml文件中进行一些更改以启用远程访问。 请帮我解决这个问题。

访问域redirect到子域,并在浏览器中显示IP而不是主机名

我正在尝试在vps中设置一个域和一些子域。 这似乎工作正常,当我通过Firefox访问,但在我的手机或Chrome浏览器我redirect到子域。 这是对themendez.de的Chrome请求的访问日志: test.themendez.de:80 5.28.115.219 – – [27/Jul/2013:15:38:35 +0200] "GET /favicon.ico HTTP/1.1" 404 504 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" test.themendez.de:80 5.28.115.219 – – [27/Jul/2013:15:38:37 +0200] "GET /favicon.ico HTTP/1.1" 404 503 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36" test.themendez.de:80 5.28.115.219 […]