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.php
和 single-services.php
之前。
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.php
和 single-services.php
之前。