我需要将两个 mod_rewrite 规则合二为一。
1) 在 CMS 中,有 index.php 处理网络上的所有查询。例如,如果 URI 是 domain.com/query-string,则 index.php 调用/包含所需的部分并显示内容。我这样做:
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteRule ^([^*]+) index.php [L,QSA]
2)我需要使用 HTTP 301 重定向将 www 永久移动到非 www。例如 www.domain.com 到 domain.com。我这样做:
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
但是,当我将这两个规则都放入 htaccess 文件时,它会停止工作,并且 Web 重定向上的所有链接都会执行 index.php 并显示主页。这就是为什么,我需要将这两个规则合二为一。
在 .htaccess 的开头是:
RewriteEngine On
RewriteBase /
有什么解决办法,怎么办?
整个.htaccess:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.[[:alnum:]]+$
RewriteRule ^([^*]+) index.php [L,QSA]
RewriteCond %{HTTP_HOST} ^www.domain.com [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301]
我试图重新排序规则,但没有解决方案。
非常感谢。