Articles of .htaccess

有没有一个优雅的解决scheme,重写长图像?查询url到cachable_nice_urls,只使用Apache htaccess?

这是一个屁股问题的痛苦! 天才解决这个谜语将获得贝宝捐赠吃两个晚餐。 现在让我们开始吧。 鉴于:大多数代理,不要caching资源与“?” 即使在响应中存在Cache-control:public头部,它们的URL也是如此。 要为这些资源启用代理caching,我必须从对静态资源的引用中删除查询string,而不是将参数编码到文件名称中。 以前有过 <img src="/imgcpu?src=folder1/photo_citty.jpg&w=3500&h=10&c=p&q=90" /> <img src="/imgcpu?src=folder2/photo_doggy.jpg&w=100&h=200&c=p" /> <img src="/imgcpu?src=folder3/photo_birds.jpg&w=200&h=500&f=bw" /> <img src="/imgcpu?src=folder3/photo_frogs.jpg&h=200" /> 工作中 <img src"/IMG-folder/photo_w100_h100_cf_q60.jpg"/> 图像将驻留在根目录下的1个文件夹中(永远不会更深) img.php?src =或者img?src =将永远被永远命名 在…. jpg&w,&h,&q,&m,&f和&c是调用variables的唯一字母(例如:&w = 200&h&= 50&c = p&f = bw&q = 90) 在这个不雅的代码的成本 # Rewrite imgcpu?src= thumbnail maker to nice static urls RewriteCond %{REQUEST_URI} ^IMG.*$ RewriteRule ^IMG-(.+)_w(.+)_h(.+)_c(.+)_q(.+).jpg$ imgcpu\?src=$1\.jpg&w=$2&h=$3&c=$4&q=$5 [L] RewriteRule […]

使用.htaccess完全限制对子目录的访问

使用.htaccess时,如何直接访问任何子目录(及其内容),如何阻止访问(例如使用浏览器的地址栏)? 我在共享主机上,所以我没有访问主httpd.conf文件。 我知道我可以简单地在子目录中放一个“拒绝所有”的文件,但我想从我的单根.htaccess文件中完成。

我应该如何区分我的networking服务器上的公共和私人网页?

我想实现的 我在我的networking服务器上有公共和私人网站,我想以某种方式将它们分开,但我希望这种分离是不可见的。 所以例如DocumentRoot是/var/www公共项目在/var/www/public ,私有项目在/var/www/private 。 如果域名是www.example.com并且我想访问public/publicproj1则URL是www.example.com/publicproj1 。 另外,如果我想private/privateproj1的URL是www.example.com/privateproj1 。 我想限制/var/www/private只能到本地networking,但public应该可以从任何地方访问。 这是一大堆private项目,我不想在apache.conf重新设置一次。 另外我想/var/www/public/startingpage服务,如果没有其他要求,所以www.example.com会显示此页面。 我到目前为止所尝试的是: 1.)将DocumentRoot设置为/var/www将公共项目放在它下面,并将一个重写规则放到private文件夹中,如下所示: RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ private/$1 [QSA] 这不起作用,因为私人文件夹下的文件夹上有更多的.htaccess文件。 (例如前端控制器,论坛等需要自己的.htaccess的应用程序) 2.)将DocumentRoot设置为/var/www/private ,但是公共项目没有得到服务。 (我可以使两个不同的访问选项的文档根?)我做了像Alias /publicproj1 /var/www/publicproj1条目,但我有Redmine安装这个设置: RewriteEngine On RewriteRule ^/$ /redmine [R] <Directory /home/www/redmine> RailsBaseURI /redmine PassengerResolveSymlinksInDocumentRoot on </Directory> 我不能用一个简单的Alias条目取代(或者我可以吗?) 我的问题 我应该创build什么文件夹结构? 我应该做什么redirect规则? 如何设置/var/www/startingpage在没有其他请求时显示?

不能gzip一些JS和CSS文件

我正在优化一个magento商店,并且一些JS和CSS(在MEDIA文件夹中编译和缩小)没有被服务gziped,因为他们应该。 所有页面都是gziped(例如这个HTML页面 ),但是一些内容不是(例如这个JS文件 )。 通过gtmetrix.com和whatsmyip的HTTP压缩testing进行testing 我在.htaccess有这个configuration: <IfModule mod_deflate.c> # Insert filter on all content SetOutputFilter DEFLATE # Insert filter on selected content types only #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript # Netscape 4.x has some problems… BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, […]

如何阻止除一个特定IP以外的所有传入代理访问?

我有一个容易受到攻击的页面,所以为了减less匿名攻击,我在我的.htaccess网站上find了这个代码: # BLOCK PROXY VISITS <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP:VIA} !^$ [OR] RewriteCond %{HTTP:FORWARDED} !^$ [OR] RewriteCond %{HTTP:USERAGENT_VIA} !^$ [OR] RewriteCond %{HTTP:X_FORWARDED_FOR} !^$ [OR] RewriteCond %{HTTP:PROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:XPROXY_CONNECTION} !^$ [OR] RewriteCond %{HTTP:HTTP_PC_REMOTE_ADDR} !^$ [OR] RewriteCond %{HTTP:HTTP_CLIENT_IP} !^$ RewriteRule .* – [F] </IfModule> 我的问题是,一个广告客户在他的公司内部使用代理,因此无法访问我的页面。 我对正则expression式一无所知,尽pipe我认为当我看到它的时候我可以识别一个正则expression式 ,如“ 哦,看看正则expression式 ”。 我认为上面的条件是正则expression式,但我没有知识来改变它们, 只有来自这个特定静态IP的代理访问不被禁止。 如果可能,我该如何实现? 先谢谢你!

在Apacheconfiguration(httpd.conf)中,多个<Directory>节是如何工作的?

例如,如果我的'/etc/apache2/httpd.conf'如下所示: <Directory /> AllowOverride None </Directory> <Directory /home> AllowOverride FileInfo </Directory> 后面的AllowOverride规则将覆盖/home目录的前任。 那部分是清楚的。 但是,如果我的httpd.conf文件看起来像这样会发生什么? <Directory /var/www/example.com/public> AllowOverride None Options -MultiViews <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / […] </IfModule> […] </Directory> <Directory /var/www/example.com/public/wp-content/cache/minify> <IfModule mod_rewrite.c> # WHY IS 'RewriteEngine On' REQUIRED? RewriteEngine On RewriteBase /wp-content/cache/minify/ RewriteRule […] </IfModule> </Directory> 问题: 是不是在第一个<Directory>部分中的RewriteEngine On也应用于第二个<Directory>部分,考虑到后者是一个子目录? 但是我注意到我需要在第二个<Directory>部分添加RewriteEngine On规则。 这是否意味着我也应该将第一个<Directory>部分的所有常用规则复制到第二个<Directory>部分? 例如, […]

强制HTTPS瓦特/负载平衡器没有(.htaccess重写)

我有以下代码作为重写规则。 RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 这似乎很好地使用和不使用ssl终止的负载平衡器。 我的问题: 如果我删除RewriteCond %{HTTPS} off我直接访问Web服务器时得到一个无限的redirect(我需要这个工作,而DNS传播) 我只是被这个规则弄糊涂了

HTTP身份validation在httpd.conf中的.htaccess AND中被忽略

我最近发现,我的本地计算机上的一些开发网站(Windows 10 / Apache 2.4)在networking上可见时,他们不应该。 这个问题与这个问题类似,但是由于没有提供解决scheme(在post中提出的所有问题都被检查过,并被证实是正确的),所以我在问自己的问题。 以下是相关文件的相关摘录: httpd.conf中: # directory and file names obfuscated intentionally <Directory "P:/HTTP/{hidden}"> AllowOverride All AuthType Basic AuthName "Private Content – Authorized Use Only" AuthUserFile P:/.htpasswd Require valid-user </Directory> .htaccess(在P:/ http / {hidden}) AuthType Basic AuthName "You must log in to view this site." AuthUserFile P:/.htpasswd Require valid-user (注意:为了协助debugging,每个AuthName条目的设置都是不同的) 我知道正在处理.htaccess文件,因为如果我添加一个会导致错误的行,说错误发生,但是当没有错误发生时,我仍然不会得到一个HTTP身份validationlogin。 该网站刚刚出现。 […]

.htaccess重写错误

我有我的网站http://example.com/category_name/product_name的结构。 我通过使用以下RewriteRule重写它到PHP: RewriteRule ^(.*)/(.*)/$ detail-produktu.php?kategorie=$1&nazev=$2 但是,当我尝试重写地址http://example.com/user/david时发生问题。 这个URL总是以/user开头,所以我想重写它: RewriteRule ^user/(.*)/$ index.php?user=$1 但是用/user的URL仍然是detail-produktu.php 。 我能做什么?

.htaccess通配符子域path

我有我的网站设置像这样: RewriteCond %{HTTP_HOST} !^www\.example\.com RewriteCond %{HTTP_HOST} ([^.]+)\.example\.com [NC] RewriteRule ^/?$ /user/profile.php?name=%1 [L] 这样做是如果用户访问: test.example.com ,它将显示文件的内容: example.com/user/profile.php?name=test 。 如果有人前往lol.example.com ,则会显示如下页面: example.com/user/profile.php?name=lol lol.example.com ,但该url与子域保持一致,如lol.example.com和lol.example.com 。 这部分正在工作。 题: 如果我去test.example.com/login ,它会显示我的域根文件。 我怎样才能使它显示/user文件夹中的东西? 例如: test.example.com/login将显示example.com/user/login和test.example.com/register将显示example.com/user/register但URL将保持与子域相同? test.example.com/pathtofile应该得到example.com/user/pathtofile的内容。 “pathtofile”应该是dynamic的。 我只想要path在文件夹/user ,而不是根文件夹。