如何在我的htaccess文件中使用多个RewriteCond?

时间:2016-12-03 11:01:52

标签: .htaccess mod-rewrite url-rewriting

我在.htaccess文件中有这个内容来处理我的路由:

DirectoryIndex root.php

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . root.php [L]

然后我想用领先的" www。"将用户重定向到我的域名。我在SO上找到了这个代码:

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]

所以我从这个条件中删除了L标志并将该代码复制到那里,所以现在这是我的.htaccess文件:

DirectoryIndex root.php

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTPS}s on(s)|offs()
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . root.php [L]

不幸的是,这会导致内部服务器错误。如何修复它并使两个条件都有效?

1 个答案:

答案 0 :(得分:1)

您可以在root .htaccess中使用此代码:

DirectoryIndex root.php    
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^root\.php$ root.php [L,NC]