所以我有一个非常标准的Apache 2安装, AllowOverride all 。 我在docroot下的“testing”文件夹中有三个文件: 的.htaccess AddHandler send-as-is .asis page.html中 this is the page! wtf.asis Status: 301 Copy Is Elsewhere Location: /testing/page.html Content-Type: text/plain Redirecting… 当我将浏览器指向/testing/wtf.asis ,我看到文本“这是页面!”,但地址栏仍然显示/testing/wtf.asis 。 我希望在地址栏中看到/testing/page.html ,并获得301redirect! 相反,我得到了200的回应。 这是怎么回事? 它在做内部redirect吗? 如果是这样,为什么?
更新,好吧,这是我的新网站 – 可用的configuration文件Apache将无法启动。 # #Document root # <VirtualHost *:80> DocumentRoot "/var/www" <Directory "/var/www"> allow from 192.168.11.0/24 deny from all Options +Indexes </Directory> </VirtualHost> # #Production simplyaccomplished.com # <VirtualHost *:80> ServerAdmin [email protected] ServerName www.simplyaccomplished.com DirectoryIndex index.php DocumentRoot "/var/www/simplyaccomplished/htdocs/" <Directory "/var/www/simplyaccomplished/htdocs/"> allow from all Options +Indexes </Directory> # CGI Directory ScriptAlias /cgi-bin/ /var/www/simplyaccomplished/cgi-bin/ <Location /cgi-bin> Options +ExecCGI […]
我已经在CentOS 5.2上安装了(从源代码)Apache 1.3,并试图让SSL工作。 我用了 –enable模块=所以 然后添加 AddModule mod_so.c LoadModule ssl_module /usr/lib/httpd/modules/mod_ssl.so 到httpd.conf。 现在我从configtest得到这个错误: /www/conf/httpd.conf第44行的语法错误: 无法将/usr/lib/httpd/modules/mod_ssl.so加载到服务器:/usr/lib/httpd/modules/mod_ssl.so:undefined symbol:ap_set_deprecated 谢谢你的帮助。
就我的代码而言,我了解到为什么我会遇到无限循环。 所以我有以下几点: <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteRule ^foo/?([^/]+)?/?(.+)? /foo.php?bar=$1&baz=$2 [L,NC] </IfModule> 所以,用户进入foo (或foo/a/b )并redirect到foo.php?bar=$1&baz=$2 。 但在这一点上(这是我知道我需要一个更彻底的解释,因为我确定这是devise).htaccess文件正在重新运行foo.php?bar=$1&baz=$2 ,这匹配我规则,并进入无限循环。 但是我不知道为什么要通过我的规则重新运行。 什么是我不了解.htaccess RewriteRule ? PS我已经解决了这个直接的问题,把下面的命令放在规则之前,但是我想知道为什么我可以在将来解决这个问题(所以我可以删除这些命令行,而不是其他的东西)。 RewriteCondition %{REQUEST_FILENAME} !-f RewriteCondition %{REQUEST_FILENAME} !-d
我正在运行Apache,CentOS 6。 我有一组url,如果他们被击中,我希望用户指向的index.php 我不明白为什么这些规则不起作用。 谁能解释一下? 更新:新规则集 RewriteCond %{REQUEST_URI} ^/faculty/gray(/)?$ [NC,OR] RewriteCond %{REQUEST_URI} ^/includes(/)?$ [NC,OR] RewriteCond %{REQUEST_URI} ^/images(/)?$ [NC] RewriteRule ^(.*)$ index.php [R,L]
我们正在build立一个CentOS 6.2 / Apache Web服务器,它的安全性要求比我以前要高。 我build立了一个名为“web”的用户组,我想限制它的成员只能够在/ var / www / html /和子目录中读,写和执行。 “networking”组的成员不应该能够访问服务器的任何其他部分(尽pipe个人用户主目录是好的)。 我认为这会很简单,但是在过去的半个小时里一直在绕圈。 我需要用什么bash命令来达到这个目的?
我在我的Apache虚拟主机中设置了一个redirect服务,这个虚拟主机服务于几个子域名 – 称为a.example.com和b.example.com – 在rails应用上提供ruby服务。 在我的虚拟主机configuration文件,我有这个规则: rewriteEngine on rewriteRule proxy/(.+)$ http://news.example.com/$1 [P] 这个想法是,我可以做http://a.example.com/proxy/news/a并获得http://news.example.com/news/a的内容,但在同一个子域,所以阿贾克斯doesn不认为我的阿贾克斯请求是跨域 – 关于这个问题的更多信息 。 问题是,虽然它在我的临时环境中工作得很好,但它不在生产中! 两台服务器都是Ubuntu服务器10.04。 Apache来自标准的ubuntu软件仓库,使用apt-get install 。 我已经做了整个/ etc / apache2 /目录的差异,唯一的区别是服务器名称。 如果我把最后一个选项改为[L],我得到一个redirect,所以这让我觉得mod_rewrite正在工作。 它只是不会与mod_proxy交谈。 通过查看日志( /var/log/apache2和rails日志),生产中的重写规则似乎被忽略 – 日志完全相同,就好像它不在那里一样。 我怎样才能debugging呢? 我可以强制Apache给我更多的信息,当我访问/proxy时为什么不执行这个特定的规则?
我的networking服务器托pipe网站的几个子域(vhosts),比如说sub1.example.com和sub2.example.com。 这些虚拟主机之间唯一的区别就是文档。 其他的东西都在虚拟主机之间共享。 现在我想为HTTPS做同样的事情,但当然ssl +虚拟主机是棘手的。 好的是我的SSL证书对我的完整域有效。 因此,我不需要指定每个虚拟主机证书。 我唯一想指定的每个虚拟主机是文档根目录。 FAQ说: 基于名称的虚拟主机是一种非常stream行的识别不同虚拟主机的方法。 它允许您为许多不同的站点使用相同的IP地址和相同的端口号。 当人们转而使用SSL时,假设可以使用相同的方法在同一台服务器上拥有许多不同的SSL虚拟主机,这似乎是自然而然的。 这是可能的,但只有使用2.2.12或更高版本的Web服务器,使用0.9.8j或更高版本的OpenSSL构build时才是可能的。 这是因为它需要一个只添加了最新版本的SSL规范的特性,称为服务器名称指示(SNI)。 我使用Apache 2.2.20和openssl 1.0.0e附带的Ubuntu 11.10,所以我认为我应该很好。 但是,我不能得到它的工作。 我已经启用了default和default-ssl网站。 如果我添加一个虚拟主机,就像我为HTTP所做的那样: <VirtualHost *:443> ServerName sub1.example.com DocumentRoot /var/www/sub1 </VirtualHost> 然后尝试重新启动Apache,我得到: [Thu Mar 01 23:55:15 2012] [warn] 默认 VirtualHost在端口443上重叠,第一个优先级Action'start'失败。
我有一个htpasswd文件,工作正常 – 在我的htaccess我有: <Limit GET POST> require valid-user </Limit> 哪个工作,login/ passwd显示正常,当你到达网站的根源。 然而,我需要限制这个,所以login/ passwd只会出现在用户达到例如http://mywebsite.com/appear/here/* – 所以基本上当用户达到/appear/here/*它应该显示。 。 我看了可以用htpasswd来限制访问一个URL而不是一个特定的文件夹? – 但似乎无法弄清楚.. 试过: <Files /appear/here/*> require valid-user </Files> <Directory /appear/here/*> require valid-user </Directory>
我有几个关于caching网站的问题,因为我之前没有尝试caching网站。 首先是如何caching一个网站,以便客户端浏览网站时加载速度更快。 例如,我有许多图像在我的CSS风格,我该如何caching? 从我之前读过的PHPcaching是通过<head>标签完成的,也可以在.htaccess完成caching(很高兴我正在使用htaccess ^ _ ^)。 我在我的标题中添加了这个标签 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta http-equiv="expires" content="-1"> <meta http-equiv="pragma" content="no-cache">//or content="cache"??? 这也是我的htaccess里面: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^system.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_URI} ^application.* RewriteRule ^(.*)$ /index.php?/$1 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L] </IfModule> […]