如何为一个子类别禁用 RewriteRule?

Posted

技术标签:

【中文标题】如何为一个子类别禁用 RewriteRule?【英文标题】:How can I disable RewriteRule for one subcategory? 【发布时间】:2010-12-04 01:34:10 【问题描述】:

我的网站根目录中有一个 .htaccess,如下所示:

RewriteEngine On

RewriteCond %HTTP_HOST !^www\.mydomain\.pl [NC]
RewriteCond %HTTP_HOST ^(?:www\.)?([a-z0-9_-]+)\.mydomain\.pl [NC]
RewriteRule ^/?$ /index.php?run=places/%1 [L,QSA]

RewriteCond %REQUEST_URI !^/index.php$
RewriteCond %REQUEST_URI !^/images/
RewriteCond %REQUEST_URI !^/upload/
RewriteCond %REQUEST_URI !^/javascript/
RewriteRule ^(.*)$ /index.php?runit=$1 [L,QSA]

但是当我输入时:

mydomain.pl/guests

我想正常访问实际文件夹来宾。我知道我需要以某种方式为来宾子文件夹禁用此规则,但我该怎么做呢?

编辑:

我已经包含了整个 .htaccess 文件

【问题讨论】:

+1 这是一个完全正确的问题。 【参考方案1】:

我已经在子文件夹中放置了一个 htaccess 并添加了 RewriteEngine Off 并且它可以工作。

【讨论】:

如果重写发生在上面的文件夹中,这将不起作用。 不是很好的解决方案。如果子文件夹包含一个本身使用 .htaccess 并在每次更新时覆盖它的外部应用程序,则必须每次都对其进行修改。 有一个没有RewriteCond的解决方案:***.com/a/1848579/1854856【参考方案2】:

添加其中之一

RewriteEngine On

#If the request starts with guests, then pass it through
RewriteCond %REQUEST_URI ^guests
RewriteRule ^ - [L,QSA]

#Or, if the request contains an existing filename or directory, pass it through
RewriteCond %REQUEST_FILENAME -d [OR]
RewriteCond %REQUEST_FILENAME -f
RewriteRule ^ - [L,QSA]

【讨论】:

取决于规则放置在哪里。是 htaccess 还是主配置文件?另外,这些都是你的规则吗? @Vinko - 谢谢你的回答我已经包含了我的整个 htaccess 文件。如何更改它以使其正常工作? 当我输入 mydomain.pl/guests 时,我被重定向到 mydomain.pl/guests/?runit=guests 并且我想正常访问 mydomain.pl/guests/(从内部加载 index.php) 所以它可以工作,但是它附加了查询字符串?然后不要使用 QSA

以上是关于如何为一个子类别禁用 RewriteRule?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ViewController segues 设置 if else 语句?

SBT - 如何为特定任务禁用插件(例如“包”)

如何为子图有一个共同的图例?

如何为seaborn histplot绘制奇数个子图

php 如何为不同类别显示不同的内容。

php 如何为不同类别显示不同的内容。