本地主机的 Htaccess 重写规则
Htaccess rewriting rule for localhost
该项目已经 运行 投入生产,添加该规则的开发人员不再与我们合作,但它在生产中工作得很好,所以为了让项目在本地工作,我尝试了很多选项,现在我在我的网络服务器中设置了 SSL,并将虚拟主机设置为与产品完全匹配,以便它可以 运行 正确,在代码中,签名表单是由会话发送的,但出于安全原因它被阻止了,我我很确定它与 htaccess 有关,这里是 htaccess 中提到的完整规则:# -- SITE PAGES ---
RewriteRule ^(.+)\.html$ index.php?_htaccess_url=&%{QUERY_STRING} [L]
RewriteRule https://www.sanatariol.com(.+)\.html$ index.php?_htaccess_url=&%{QUERY_STRING} [L]
签名页URL为:https://www.sanitavia.com/cabchatt/connexion.html
我是否必须在 htacces 中添加规则,因为我希望它在本地 运行?
该规则是正确的,但请尝试将其添加到您的规则之前
RewriteBase /
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule https://www.sanatariol.com(.+)\.html$ index.php?_htaccess_url=&%{QUERY_STRING} [L]
RewriteRule
指令仅匹配 URL 路径(不是绝对 URL)。所以,上面的规则不会匹配。
改为尝试以下操作:
RewriteRule (.+)\.html$ index.php?_htaccess_url= [QSA,L]
您也不需要手动附加查询字符串,而是使用 QSA
(查询字符串附加)标志。
该项目已经 运行 投入生产,添加该规则的开发人员不再与我们合作,但它在生产中工作得很好,所以为了让项目在本地工作,我尝试了很多选项,现在我在我的网络服务器中设置了 SSL,并将虚拟主机设置为与产品完全匹配,以便它可以 运行 正确,在代码中,签名表单是由会话发送的,但出于安全原因它被阻止了,我我很确定它与 htaccess 有关,这里是 htaccess 中提到的完整规则:# -- SITE PAGES ---
RewriteRule ^(.+)\.html$ index.php?_htaccess_url=&%{QUERY_STRING} [L]
RewriteRule https://www.sanatariol.com(.+)\.html$ index.php?_htaccess_url=&%{QUERY_STRING} [L]
签名页URL为:https://www.sanitavia.com/cabchatt/connexion.html
我是否必须在 htacces 中添加规则,因为我希望它在本地 运行?
该规则是正确的,但请尝试将其添加到您的规则之前
RewriteBase /
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule https://www.sanatariol.com(.+)\.html$ index.php?_htaccess_url=&%{QUERY_STRING} [L]
RewriteRule
指令仅匹配 URL 路径(不是绝对 URL)。所以,上面的规则不会匹配。
改为尝试以下操作:
RewriteRule (.+)\.html$ index.php?_htaccess_url= [QSA,L]
您也不需要手动附加查询字符串,而是使用 QSA
(查询字符串附加)标志。