我的htaccess文件规则存在问题..
我的代码将所有带http://website.com/secure/ *的网址重定向到CGI-BIN,网址中没有cgi-bin文件夹。
RewriteEngine on
RewriteRule ^secure/$ /cgi-bin/secure/home.pl
RewriteRule ^secure/?(.*)$ /cgi-bin/secure/$1
问题是:如果我使用的话,我找不到404:
http://website.com/secure (without last slash)
此外,我尝试将此.htaccess与http合并到https(仅适用于此部分,而不是整个网站。
我不知道是否可以帮助我,如果你有一个很好的教程来向我解释基本/复杂的htaccess编码。
谢谢您的时间。
答案 0 :(得分:1)
首先,重定向到HTTPS,输入网址匹配/secure
。有几种方法可以使用RewriteCond
来处理它。我们将通过匹配%{REQUEST_URI}
来实现此目的。
RewriteRule
中真正缺少的是第一条规则中的可选斜杠。我会将/?
添加到第一个,并在第二个中使用(.+)
而不是(.*)
。
RewriteEngine On
# First redirect to HTTPS if HTTPS isn't already on
# The first RewriteCond makes sure this only matches for /secure
# and doesn't force everything on your site into https.
RewriteCond %{REQUEST_URI} ^secure
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302,QSA]
# Then fix the rewrite rules
# Nothing after secure goes to home.pl
RewriteRule ^secure/?$ /cgi-bin/secure/home.pl [L]
# Something present after secure/ (.+) is captured in $1
RewriteRule ^secure/(.+)$ /cgi-bin/secure/$1 [L]
如果重写为cgi-bin/
应该保留查询字符串,请使用[L,QSA]
而不是[L]