Articles of .htaccess

将.htaccess转换为nginx。 重写不应该如此

我无法将.htaccess转换为nginxconfiguration。 我一直在尝试使用在线转换工具。 .htaccess转换如下: RewriteEngine on RewriteCond %{REQUEST_URI} !/public RewriteCond %{REQUEST_URI} !/index.php RewriteRule ^(.*)$ index.php/?params=$1 [NC] 我一直在尝试使用下面的nginxconfiguration: location / { rewrite ^(.*)$ index.php/?params=$1; } 这只是不正常的工作。 它也允许访问这个目录中的其他文件。 我只想要index.php可用。 甚至需要使用.htaccess规则。 在生产服务器上不能安装apache / httpd。 而且我不想浪费资源在docker中运行apache。

将.htaccess中的基本身份validation凭据传递给受保护的文件夹

我有两个文件夹,F1和F2,在我的公共文件夹下,每个都有一个.htaccess文件。 F1受到.htaccess中的基本身份validation的保护,如下所示: AuthName "Restricted Area" AuthType Basic AuthUserFile /home/myaccount/.htpasswd AuthGroupFile /dev/null require valid-user 我正在从F2重写一个url到F1,如下所示: RewriteRule ^f2file\.php$ ../F1/f1file.php [NC,L] 这个重写很有效,但是我用我在F1中设置的基本authentication来挑战我。 有没有办法发送基本身份validation与重写,或绕过基本身份validation从本地文件夹重写时? 我试过设置一个像这个问题一样的环境variables: SetEnvIf Request_URI ^f2file\.php$ ADD_BASIC_AUTH RequestHeader set Authorization "Basic XXXXXXXX" env=ADD_BASIC_AUTH 其中XXXXXXXX是user:pass的base 64编码值,如上面问题所述。 但是,这不起作用,它仍然挑战我的凭据,也许是因为我没有做重写作为代理? 有任何想法吗? 谢谢!

链接.htaccess重命名规则 – 是指令必要的?

我将我的网站转换为ssl 。 我的htaccess目前有现有的规则,我想添加一个规则来重写所有http请求到https (这是一个共享服务器,我没有访问configuration文件,所以这是唯一的方法)。 主要的两个规则是第一个( http到https )和最后一个(移除www )。 我试图包围我的头是在这种情况下链接规则会发生什么,如果我需要[L]指令与http重命名规则的https 。 我知道[L]指令会导致一个.htaccess循环,并且如果可能的话只传递一个规则会更有效率。 如果不使用[L]指令(使用http指向https重命名规则),那么www重命名规则是否仍然能够一次传输? RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301] #Rules for Versioned Static Files – remove timestamp RewriteRule ^(js|js-common|css|css-common|img|img-common)/(.+)\.([0-9])+\.(js|css|php|jpg|gif|png)(.*)$ $1/$2.$4$5 [L] #rename invalid file and directory requests RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?redirectroot=%{REQUEST_URI} #direct favicon requests to img directory RewriteCond %{REQUEST_URI} […]

如何在指定国家拒绝访问,并且只允许通过.htaccess进行密码validation

我需要拒绝某个特定国家/地区的网站访问,但允许通过.htaccess身份validation绕过 我发现这个网站https://www.ip2location.com/blockvisitorsbycountry.aspx 在那里我可以下载一个.htaccess拒绝来自特定国家的访问,但我不知道是否有可能增加继续用户/密码的能力 <Limit GET HEAD POST> order allow,deny allow from all deny from 123.456.789.0/255 </Limit> 将其放在根文件夹中也会拒绝访问该国以外的Google机器人?

不同的Apache版本允许,拒绝或需要.htaccess

当我们想阻止机器人,垃圾邮件引用者使用.htaccess文件,一些网站使用下面的代码语法: Order allow,deny Allow from all Deny from env=spambot 但是有些网站告诉我们,我们需要为不同的Apache版本使用不同的代码: #For Apache 2.2 <IfModule !mod_authz_core.c> <IfModule mod_authz_host.c> Order allow,deny Allow from all Deny from env=spambot </IfModule> </IfModule> # For Apache 2.4 <IfModule mod_authz_core.c> <RequireAll> Require all granted Require not env spambot </RequireAll> </IfModule> 现在我想要哪个锥体是正确的或两者都是正确的?

如何将规则从.htaccess移动到httpd主服务器configuration文件?

我有约。 在我的.htaccess文件中使用500 RewriteCond %{HTTP_REFERER}规则来阻止垃圾邮件引用网站。 规则如下: RewriteCond %{HTTP_REFERER} hol\.es [NC,OR] RewriteCond %{HTTP_REFERER} hys\.cz [NC,OR] RewriteCond %{HTTP_REFERER} zzz\.com\.ua [NC,OR] RewriteCond %{HTTP_REFERER} hypersito\.com [NC,OR] RewriteCond %{HTTP_REFERER} tode\.cz [NC,OR] and many more similar lines 现在由于性能问题,我build议将这些规则移到httpd主服务器configuration文件。 我不是这个领域的专家,所以有人请指导我如何做到这一点? 我有权访问WHM和shell。 我在网上search,发现该文件驻留在/etc/httpd/conf目录中。 当我打开httpd.conf文件时,它包含300多行。 我应该在httpd.conf文件中添加这些RewriteCond %{HTTP_REFERER}规则,以及如何?

.htaccess代码来阻止包含Windows 2001-2009名称的UserAgent

我试图阻止其中包含以下名称的useragents: Windows 2001 Windows 2002 Windows 2003 Windows 2004 Windows 2005 Windows 2006 Windows 2007 Windows 2008 Windows 2009 我将在.htaccess文件中使用以下代码: RewriteCond %{HTTP_USER_AGENT} .*Windows\ 200[1-9].* [NC] RewriteRule ^(.*)$ – [F,L] 上面的代码是否正确或者是否有任何其他正确的代码forms来执行此操作?

如何只从.htaccess运行一个Header指令

我有Apache 2.4.18(安全补丁),但由于托pipe限制,我不能只更改configuration文件.htaccess 。 mod_headers已启用,我只想在访问www.example.com/ (带有或不带尾部斜线)时才运行Header指令。 LocationMatch '^/$'不允许在.htaccess 。 怎么办?

Apache编码导致404s的URI

这是我遇到的一个奇怪的问题。 我正在使用mod_rewrite重写URL后调用的框架。 如果URI中的字符是重音字符,就像在拉丁字母表中那样,请求永远不会发送到我的框架中,而是服务器出错,出现在404上。我使用Windows机器,所以不知道这是否有一些去做或不做。 只要URI中没有重音字符,就可以毫无问题地将请求发送给框架。 有人可以告诉我这里发生了什么,以及如何解决这个问题? 编辑:这里是我的access.log 2行。 第一行显示了由Apache编码的重音Å ,并且没有通过。 当我将URI中的Å更改为英文“A”时,一切正常。 127.0.0.1 – – [20/Oct/2017:13:50:50 -0400] "GET /actor/%C3%85ker HTTP/1.1" 404 222 127.0.0.1 – – [20/Oct/2017:13:54:48 -0400] "GET /actor/Aker HTTP/1.1" 200 5701 编辑:这些是.htaccess文件中的行 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php?request=$1 [L,QSA] 这是一个由两个人组成的debugging日志的一部分,显示其中一个mod_rewrite不会将请求转发到我的框架,另一个是。 这是失败的: [Fri Oct 20 17:52:48.119655 2017] [rewrite:trace3] [pid 1620:tid 792] mod_rewrite.c(480): [client 127.0.0.1:52846] […]

Htaccess规则不适用

我在我的htaccess文件中有以下规则来删除.php扩展名,并做一个301redirect到无扩展名的URL: # To remove .php extension RewriteCond %{THE_REQUEST} ^[AZ]{3,}\ (.*)\.php [NC] RewriteRule ^ %1 [R=301,L] # To check whether the file exists then set it back internally RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^.*$ $0.php [L] 我想在PHP文件上应用以下规则: RewriteRule ^test/([0-9]+)$ test.php?id=$1 [L] 上述规则导致500内部服务器错误。 如果我删除了第一组规则,则第二条规则再次运行。 所以,这两套规则都有一些冲突。