.htaccess重写规则混淆/冲突

时间:2016-01-28 10:24:16

标签: .htaccess mod-rewrite url-rewriting

我在网站上设置了以下重写规则。我想设置它,所以我有以下不同的网址。

当前.htaccess

Options +FollowSymlinks
RewriteEngine On
RewriteBase /

RewriteRule ^([^-]*)/$ ?action=$1 [L]
RewriteRule ^([^-]*)-([^-]*)/$ ?action=$1&id=$2 [L]

必填网址

www.site.com
www.site.com/page/
www.site.com/product-1234/
www.site.com/privacy-policy/

问题是第二次重写规则影响了privacy-polcy网址,但不应该这样做,因为第二次重写规则仅适用于其中包含产品ID的产品页面。

我也试图忽略作为我网站结构存在的目录,所以在root下我有以下目录,我不希望重写规则影响,因为用户不应该知道这些目录的任何内容。

/system/
/tasks/

1 个答案:

答案 0 :(得分:3)

# catch more specific urls:
RewriteRule ^product-([0-9]*)/$ ?action=product&id=$1 [L]

# ignore requests that want files or directories that do exist:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# then continue with the less specific:
RewriteRule ^([^/]*)/$ ?action=$1 [L]
相关问题