htaccess重写规则不匹配

时间:2015-07-07 12:54:23

标签: apache .htaccess ubuntu mod-rewrite

我有一个问题,因为我改变了我的托管。新的托管包存在一个简单规则的问题,它在完美之前有效。

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

# NOT MATCHING
RewriteRule ^pro/(.*)/(.*)/$ pro.php?id=$1&p=$2 [QSA,L]

# MATCHING
RewriteRule ^(.*)/(.*)/$ pro.php?id=$1&p=$2 [QSA,L]

当我打电话给f.e. "的 www.example.com/pro/350/658a / "第一条规则不是加工而是第二条规则。 Doe有人知道为什么它没有在新的托管包上工作?

1 个答案:

答案 0 :(得分:0)

.*几乎匹配所有内容。试试这些规则:

RewriteEngine On
RewriteBase /

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

# NOT MATCHING
RewriteRule ^pro/([^/]+)/([^/]+)/?$ pro.php?id=$1&p=$2 [QSA,L]

# MATCHING
RewriteRule ^([^/]+)/([^/]+)/?$ pro.php?id=$1&p=$2 [QSA,L]