php - 让一些 RewriteCond 影响多个规则

标签 php mod-rewrite url-rewriting

我有一个网站,各个部分parse request URLs by themselves有些则没有(例如 vBulletin 论坛)。我必须向适当脚本发送请求的 .htaccess 是:

# wiki, shop, admin
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.js
RewriteRule ^wiki/(.*)$ w/index.php?title=$1 [PT,L,QSA]
RewriteRule ^wiki/*$ wiki/ [L,QSA]
RewriteRule ^shop/ /shop/shop.php [NC,L]
RewriteRule ^forum/admincp/pkr/ /forum/admincp/pkr/pkr.php [NC,L]

这并不像我预期的那样有效。我忘记了重写条件只适用于它们之后的第一条规则。问题是如何将这些 RewriteCondition 应用到所有这些规则,而不必复制粘贴它们 4 次?


问题是这样的:

  • /shop/example 重写为/shop/shop.php
  • /shop/shop.php 然后再次重写为/shop/shop.php(阅读:我们有一个无限循环)。如果将此条件应用于该重写规则,则不会发生这种情况,因为/shop/shop.php 是一个实际文件:

    RewriteCond %{REQUEST_FILENAME} !-f

所以是的...

最佳答案

反转表达式并将其附加到破坏规则:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} (.*)\.js
RewriteRule ^ - [L]

关于php - 让一些 RewriteCond 影响多个规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1715765/

相关文章:

apache - 我如何在 Apache http mod_rewrite 中使用原子作为路径变量?

.htaccess - 删除所有 URL 的尾部斜杠

php - 具有自定义分类法和自定义帖子类型的 Wordpress 重写规则

.htaccess - 如何在 RewriteRule 中包含空格?

php - 如何在 GitHub 上为 Laravel 包使用 PR?

php - 从多个表的一个主键中获取数据库中的数据

PHP从4个数组制作树状结构数组

javascript - 在javascript中选择下拉列表时如何显示加载图像

apache - htaccess 中的 301 重定向具有参数 P 的 URL

html - 使用htaccess将所有请求重定向到主页(隐藏URL中的index.html)