Mod rewrite Apache mod_重写规则不';不适合不同的页面
我在.htaccess文件中有一个关于apache2的重写规则,它在posts.php页面上运行良好Mod rewrite Apache mod_重写规则不';不适合不同的页面,mod-rewrite,apache2,Mod Rewrite,Apache2,我在.htaccess文件中有一个关于apache2的重写规则,它在posts.php页面上运行良好 mysite.com/post.php?id_name=this-is-the-title-of-my-site 变成 mysite.com/this-is-the-title-of-my-site 我希望对cats.php页面使用相同的规则,以便 mysite.com/cats.php?cat_label=articles 变成 mysite.com/articles 我使用了相同的
mysite.com/post.php?id_name=this-is-the-title-of-my-site
变成
mysite.com/this-is-the-title-of-my-site
我希望对cats.php页面使用相同的规则,以便
mysite.com/cats.php?cat_label=articles
变成
mysite.com/articles
我使用了相同的规则并更改了文件名和参数,但是cats.php页面的规则似乎失败了,并且被posts.php规则覆盖
我宁愿不这样做,但我不介意改变结构成为
mysite.com/cats/articles
这是我目前正在使用的.htaccess文件
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ post.php?id_name=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ cats.php?cat_label=$1 [L,QSA]
非常感谢所有帮助标记
[L]
表示“最后一个”,如中所示,当该规则匹配时,它是测试的最后一个重写规则。您需要一种方法来区分这两种类型的重定向。有两种方法可以做到这一点:
(1)所有帖子名称中都有破折号,但类别中没有破折号,因此两个示例都是这样的:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-]+)$ cats.php?cat_label=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ post.php?id_name=$1 [L,QSA]
(2)为类别添加一个目录,这样就不会出现任何可能导致错误的魔法角色内容。您已经遇到了上述可能性。下面是它的外观:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cats/(.*)$ cats.php?cat_label=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ post.php?id_name=$1 [L,QSA]
在这两种情况下,我们首先匹配更具体的版本,将它们标记为
[L]
ast。然后,我们在末尾有一个广泛的、全面的标记。标志[L]
表示“最后一个”,如中所示,当该规则匹配时,它是最后一个测试的重写规则。您需要一种方法来区分这两种类型的重定向。有两种方法可以做到这一点:
(1)所有帖子名称中都有破折号,但类别中没有破折号,因此两个示例都是这样的:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^-]+)$ cats.php?cat_label=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ post.php?id_name=$1 [L,QSA]
(2)为类别添加一个目录,这样就不会出现任何可能导致错误的魔法角色内容。您已经遇到了上述可能性。下面是它的外观:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^cats/(.*)$ cats.php?cat_label=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ post.php?id_name=$1 [L,QSA]
在这两种情况下,我们首先匹配更具体的版本,将它们标记为[L]
ast。然后,我们有广泛的,catchall在最后