Mod rewrite mod_重写条件的基本帮助

Mod rewrite mod_重写条件的基本帮助,mod-rewrite,restful-url,Mod Rewrite,Restful Url,嗨。我是mod_rewrite的新手,想知道是否可以执行以下操作: RewriteRule ^([^/]*)$ index.php?slug=$1 这条规则将只指向index.php,但如果我想做另一条规则,将特定的slug指向不同的脚本,即 RewriteRule ^a-new-page$ different.php 这将不起作用,因为第一条规则声明输入的任何内容都应指向索引 有没有办法对特定的slug强制执行新规则?是的,这是可能的——只需将此类特定规则置于通用/广义规则之前(规则声明的

嗨。我是mod_rewrite的新手,想知道是否可以执行以下操作:

RewriteRule ^([^/]*)$ index.php?slug=$1
这条规则将只指向index.php,但如果我想做另一条规则,将特定的slug指向不同的脚本,即

RewriteRule ^a-new-page$ different.php
这将不起作用,因为第一条规则声明输入的任何内容都应指向索引

有没有办法对特定的slug强制执行新规则?

是的,这是可能的——只需将此类特定规则置于通用/广义规则之前(规则声明的顺序):

另外,请注意广泛的规则——它们可能进入重写循环(重写后,新的URL进入下一次迭代,如果规则编写不正确,则可能进入无休止的循环,Apache将不得不强制终止该循环,而您的用户将看到一个500错误页面)。更好的规则是:

# specific rule
RewriteRule ^a-new-page$ different.php [L,QSA]

# broad rule (will be triggered if requested resource is not a file or directory) 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ index.php?slug=$1 [L,QSA]
  • [L]
    告诉Apache如果此规则匹配,则停止重写
  • [QSA]
    告诉您将查询字符串附加到新的URL(如果您有URL参数,则很有用:例如跟踪数据、页面参数等)

有用的链接:

谢谢这是我想要的答案:)
# specific rule
RewriteRule ^a-new-page$ different.php [L,QSA]

# broad rule (will be triggered if requested resource is not a file or directory) 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ index.php?slug=$1 [L,QSA]