我需要configuration我的Apache2服务器(版本2.2.22),使我可以自动索引WWW根文件夹及其子目录,但限制访问(即限制下载)只是一组特定的文件types(即。 txt和.log)。 换句话说,任何人都可以看到什么文件存在,但只能下载某些文件types。 我已经提出了下面的限制下载只是指定的文件types,但目录索引的所有URL返回403 Forbidden。 <Directory /var/www/> Options Indexes FollowSymLinks SetOutputFilter DEFLATE AllowOverride None Order allow,deny <FilesMatch ""> Order deny,allow allow from all </FilesMatch> <FilesMatch ".+\.(?!(txt|log)$)[^\.]+?$"> Order allow,deny deny from all </FilesMatch> </Directory>
我们在Joomla有多个网站。 以下是详细信息。 托pipe在域mydomain.co.in,sub.mydomain.co.in。 Amazon EC2实例,位于负载均衡器之后。 我们为* .mydomain.co.in购买了WildCard SSL证书,并在负载平衡器上对其进行了configuration。 我已经把Joomlaconfiguration的Live Sitevariables设置为https://sub.mydomain.co.in 。 当我浏览网站与https://sub.mydomain.co.in或http://sub.mydomain.com ,它工作正常。 但我想强制所有请求https://。 我试图通过 在Joomlaconfiguration中将强制SSLvariables设置为整个站点。 在.htaccess中添加以下代码 RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 但是,没有任何工作,当我做这两个浏览器中的任一个说这个页面有redirect循环 。 我挖了一点,看是否从其他地方发生redirect。 httpd.conf中的虚拟主机configuration 任何Joomlaredirect插件。 但是没有导致redirect循环的代码/插件。 谁能帮忙? 提前致谢。
我升级了我的Ubuntu到14.04 LTS和Apache到2.4。 当服务器第一次启动时,我得到403错误访问页面。 这是当我知道我需要改变Require all granted 。 我以为我有一切工作,直到我意识到.htaccess没有被加载到任何地方。 我认为还需要改变,但Apache文档说,从我能find的没有问题。 以下是我Directory规则。 VirtualDocumentRoot /var/hosts/%-2.0.%-1.0/%-3+/public_html <DirectoryMatch "^/var/hosts/[^/]+/[^/]+/public_html"> Options FollowSymLinks AllowOverride All Require all granted </DirectoryMatch> 我的第一个想法是正则expression式是错误的,没有规则被加载。 所以我评论了Require all granted并看到它停止再次加载网站。 所以我知道这是加载它们。 我不得不做下面的工作。 <Directory /var/hosts/> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> 我可以离开它吗? 任何想法,为什么它不工作?
我有一个网站,任何人都可以访问,但是一个目录应该请求http授权。 我在website.conf中添加了以下几行: <Directory /var/www/website/serverside> AuthType Basic AuthName "Login please" AuthUserFile /var/www/website/serverside/.htpasswd Require valid-user </Directory> <Directory /var/www/website > Allow From All Satisfy All AllowOverride None </Directory> 但即使我访问根页面,它也会请求密码! 我该如何解决?
我是pipe理运行在Debian 7.8上的Apache 2.4.9 Web服务器的团队的一部分。 我们遇到了一个用户网站的问题: www.example.com/~user 当我们尝试访问这个URL时,一个页面加载了以下内容: 内部服务器错误 服务器遇到内部错误或configuration错误,无法完成您的请求。 请联系服务器pipe理员webmaster @ localhost,并告知他们错误发生的时间,以及您可能已经犯的错误。 有关此错误的更多信息可能在服务器错误日志中可用。 Apache / 2.2.22(Debian)服务器,位于www.cpdee.ufmg.br端口80 而在/var/log/apache2/error.log我find这个: [Fri Apr 03 11:36:36 2015] [alert] [client 179.214.195.80] /home/web/user/.htaccess: Options not allowed here 如果我再查看/home/web/user/.htacces文件的内容,那么就是这个configuration行: Options -Indexes 经过快速的研究,我觉得这个问题与Apache的虚拟主机configuration有关。 具体来说, 本教程指出可以通过在/ etc / apache2 / sites-enabled / 000-default的“AllowOverride”列表中添加“Options”来解决该问题,如下所示: <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride FileInfo Options Order allow,deny allow […]
为了确保没有可以通过.htaccess利用的安全弱点,我们如何看到Apache可以通过像SetHanlder和AddHandler这样的指令来使用所有可能的处理器。 我知道我可以通过查看mod_info的输出或通过configuration文件进行grepping(这是我在find这个问题的答案时发现的一种方法)来find一些,但这并不意味着没有可用的处理程序这样列出。 我想我可以下载和searchApache的所有源代码和每个已加载的模块,看看他们正在注册什么,但有没有更好的方法? 一个快速的解决办法是不允许在.htaccess中的AddHandler和SetHandler,但是它有缺点。 例如,Drupal对SetHandler指令有一个有效的用例,因为它将它用作深层防御的一部分,以防止某人以某种方式通过file upload器将其上载到站点时运行PHP脚本。 以下是我所指的一些例子: AddHandler server-parsed .shtml SetHandler server-info AddHandler application/x-httpd-php5 .php 如果有人感兴趣的话,可以从网站/ default / files / .htaccess得到Drupal的用例: # Set the catch-all handler to prevent scripts from being executed. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 <Files *> # Override the handler again if we're run later in the evaluation list. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 </Files> 编辑2015年7月30日:这不是一个详尽的答案,但万一它有助于任何人,我发现一些处理程序列在http://httpd.apache.org/docs/2.4/handler.html顶部,也阅读自定义处理程序可以通过Action指令创build(请参阅http://httpd.apache.org/docs/2.4/mod/mod_actions.html#action )。 编辑2015年9月1日:我不知道是否有一些方法来转储一个httpd进程的内存,并find那里的处理程序名称。 […]
也许是一个简单的,但这使我感到困惑。 我正在运行一个EC2实例,它将Apache 2.2安装到该框中。 我没有权限访问a2enmod ,但是我需要将AllowOverride None更改为AllowOverride FileInfo作为我的应用程序安装到的默认/var/www/html目录。 这是在httpd.conf中configuration的,但我不希望SSH进入我的应用程序的每个新实例,并手动更改该设置。 我有一个构build脚本,将以下文件复制到/etc/httpd/conf.d/my-app.conf : <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride FileInfo Order allow,deny Allow from all </Directory> 这个不起作用,因为httpd.conf中加载conf.d/*.conf文件的部分在/var/www/html定义的部分之前 (因此AllowOverride被设置为None ) 。 我怎样才能configuration这个设置是我想要的(如FileInfo )而不需要手动编辑那个文件? 我需要这个脚本。
某些版本的Chrome会自动将https添加到我的网站地址中。 所以我需要将httpsredirect到http,因为我没有SSL证书。 我正在尝试这个,没有结果: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} =https RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] </IfModule>
我正在尝试在Laravel(5.1)项目中托pipe一个WordPress站点。 我有以下结构(剥离了一些) ├── app ├── config ├── public │ ├── index.php │ ├── wordpress -> ../wordpress │ └── .htaccess ├── resources ├── storage ├── vendor └── wordpress ├── index.php ├── wp-admin ├── wp-config.php ├── wp-includes └── .htaccess 虚拟文档根目录是公共的。 WordPress的应该抓住一切通过.htaccess跌落。 但是,例如/login应该去laravel。 当我的项目增长时,我打算添加更多的规则来捕捉Laravel的请求。 我在/ public中有以下.htaccess文件: <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d […]
尝试在.htaccess文件中使用AuthName来覆盖顶级configuration设置不起作用 – 服务器仍然发送configuration中设置的WWW-Authenticate:"Basic realm="…""的值。 尽pipe启用了AllowOverride AuthConfig 我做错了什么,或者我发现了一个错误? httpd.conf中: <Directory "/www"> AllowOverride AuthConfig </Directory> <Location /> AuthName "config" </Location> /www/.htaccess AuthType Basic AuthName "htaccess" AuthUserFile /dev/null Require user nobody PS:上面例子的真实世界版本是有一个共同的顶级“单点login”身份validation设置,然后把单行“需要有效的用户”等在htaccess文件。 这个冲突发生在一个子目录中,该子目录使用虚拟身份validation领域来实现基本身份validation的注销。