0

我一直在使用以下规则在同一服务器上的开发域上的 URL 中传递查询字符串,并且它正在工作。

DOMAIN1 URL 上的工作代码:http: //DOMAIN1.com/billing/renew.php ?invoice_no=XXX

RewriteEngine On

RewriteRule ^billing/renew/invoice/([^/]*)$ /billing/renew.php?invoice_no=$1 [L]

但是,当我将它部署到子目录“beta”中的实时域时,它不起作用。两个域都在同一台服务器上,并且主机配置相同。允许覆盖以确保 htaccess 正常工作。唯一的区别是实时域在 https 协议上工作,并且在主机配置中定义了一个重写规则,以将所有非 https 流量重定向到 https。

我已将 httacess 文件放在实时服务器上的 beta 目录中。

DOMAIN2 URL 上的非工作代码:“ https://DOMAIN2.com/beta/billing/renew.php?invoice_no=XXX

RewriteEngine On
RewriteBase /beta/

RewriteRule ^billing/renew/invoice/([^/]*)$ /billing/renew.php?invoice_no=$1 [L]

也试过

RewriteEngine On

RewriteRule ^beta/billing/renew/invoice/([^/]*)$ /beta/billing/renew.php?invoice_no=$1 [L]

有人可以告诉我我做错了什么吗?

4

1 回答 1

0

您需要将规则的目标设为相对 URI,以便可以将基础应用到它。要么,要么将基础添加到绝对 URI:

RewriteEngine On
RewriteBase /beta/

RewriteRule ^billing/renew/invoice/([^/]*)$ billing/renew.php?invoice_no=$1 [L]
# No "/" here ------------------------------^

或者

RewriteEngine On

RewriteRule ^billing/renew/invoice/([^/]*)$ /beta/billing/renew.php?invoice_no=$1 [L]
# Add the "/beta" here ---------------------^
于 2013-06-20T16:40:58.673 回答