将代码移动到子目录时重写规则不起作用

时间:2013-06-20 13:46:14

标签: .htaccess mod-rewrite url-rewriting rewrite

我一直在使用以下规则在同一服务器上的开发域中的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]

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

1 个答案:

答案 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 ---------------------^