.htaccess相互冲突的规则

时间:2014-03-25 12:07:21

标签: regex .htaccess mod-rewrite rewrite conflict

在.htaccess和冲突规则方面遇到一些麻烦。 代码如下:

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

Options +FollowSymLinks  
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

DirectoryIndex index.php

RewriteRule ^home/?$ index.php [L]
RewriteRule ^([a-zA-Z0-9-]+)?$ static-page.php?slug=$1 [L]

基于static-page.php的页面工作正常,但是当我尝试去'/ home'页面加载一段时间后,却什么也没给我。 我相信这是因为第二条规则是覆盖第一条规则。

任何人都知道如何解决这个问题?

谢谢,

1 个答案:

答案 0 :(得分:1)

尝试更正此代码:

DirectoryIndex index.php
Options +FollowSymLinks -MultiViews 

RewriteEngine On

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

RewriteCond %{SCRIPT_FILENAME} -f [OR]
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^home/?$ index.php [L]

RewriteRule ^([a-zA-Z0-9-]+)?$ static-page.php?slug=$1 [L,QSA]