我一直在使用以下规则在同一服务器上的开发域中的URL中传递查询字符串,但它正在运行。
DOMAIN1上的工作代码 网址: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上的非工作代码 网址:“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]
有人能告诉我我做错了什么吗?
答案 0 :(得分: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 ---------------------^