htaccess 中的重定向不适用于 2 条规则

Redirection in htaccess not working with 2 rules

htaccess 在第一行工作正常但在第二行不工作。如果我删除第一行比第二行工作正常。 为什么两条线不能一起工作?

RewriteRule ^(.*) /single-services.php?slug=
RewriteRule ^blog-(.*)$ single-blog.php?slug=

只需在您的文件中更改它们的执行顺序即可。由于您的第一条规则涵盖 .* 这是一个贪婪的匹配,所以这就是为什么它总是执行第一个。因为我们现在更改了规则的顺序,所以当请求以博客开头的 URI 时,.* 规则将不会提供它。

我还为您的规则添加了必要的标志,这将有助于规则的顺利执行。请确保在测试您的 URL 之前清除您的浏览器缓存。

RewriteEngine ON
RewriteRule ^blog-(.*)$ single-blog.php?slug= [NC,QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ single-services.php?slug= [QSA,L]

注意: 另外,在您重写 php 文件之前,我已经删除了 /(右侧规则的一面)如果你的文件中的 3(single-blog.php、single-services.php 和 .htaccess)存在于根文件夹中,那么你可以添加 / 在两个规则中的 single-blog.phpsingle-services.php 之前。