Mod_rewrite可选的url参数可防止重定向

时间:2017-11-18 15:43:08

标签: php .htaccess redirect mod-rewrite

我有一个有可选参数的网址。网址为http://example.com/piercing/parameter/value,但网址也可以被视为http://example.com/piercing。我已使用以下内容在mod_rewrite中设置了可选参数:

RewriteRule ^piercing/([^/]*)$ piercing.php
RewriteRule ^piercing/location/([^/]*)$ piercing.php?location=$1
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule ^ - [L]

我遇到的问题是我在mod_rewrite设置了重定向,将用户从特定页面重定向到特定日期,piercing.php页面就是其中之一。自从我为可选参数添加重写规则以来,重定向不再适用于该页面,但它适用于所有其他页面。

在重定向内部,我列出了我不希望通过从规则中排除它们而重定向的页面。这是重定向规则:

<IfModule mod_rewrite.c>
 RewriteCond %{TIME} <20171201000000
 # DESKTOP
 #RewriteCond %{REMOTE_ADDR} !^00\.000\.00\.00
 # PHONE
 #RewriteCond %{REMOTE_ADDR} !^000\.000\.0\.00
 RewriteCond %{REQUEST_FILENAME} !(styles|images|javascript).+$
 RewriteCond %{REQUEST_URI} !aftercare.php$ [NC]
 RewriteCond %{REQUEST_URI} !faq.php$ [NC]
 RewriteCond %{QUERY_STRING} !redirect=(?:construction|404)$ [NC] 
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|ttf|woff|js) [NC]
 RewriteRule .* index.php?redirect=construction [R=302,L]
</IfModule>

什么会阻止该网页重定向,因为我没有设置RewriteCond %{REQUEST_URI} !piercing.php$ [NC]规则?

1 个答案:

答案 0 :(得分:0)

RewriteCond %{REQUEST_FILENAME} !-d

添加此条件。